java fullgc如何发现
Java Full GC 的发现方法
1. 监控 GC 日志
启用 JVM 的 GC 日志记录功能,通过分析日志中的 Full GC 标记识别 Full GC 事件。添加以下 JVM 参数:
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/to/gc.log
日志中 Full GC 条目会显示暂停时间、内存回收前后的大小等信息。
2. 使用 JVM 内置工具
通过 jstat 命令实时监控 GC 行为:
jstat -gcutil <pid> 1000
输出中的 FGC 列显示 Full GC 发生次数,FGCT 列显示累计 Full GC 时间。
3. 可视化工具分析
借助工具如 VisualVM、GCEasy 或 GCViewer 导入 GC 日志,图形化展示 Full GC 频率、持续时间及内存变化趋势,便于直观定位问题。
4. 应用性能监控(APM)工具
集成 Prometheus + Grafana 或 New Relic 等工具,通过 JVM 指标(如 jvm_gc_collectors_seconds_count{gc="MarkSweepCompact"})自动告警 Full GC 异常。
5. 代码层检查

- 显式调用
System.gc()可能触发 Full GC,需审查代码。 - 检查大对象分配或内存泄漏(如未关闭的流、静态集合滥用),通过堆转储(
jmap -dump)分析对象占用。
6. JVM 参数调优观察
调整 -XX:+UseConcMarkSweepGC 或 G1 等垃圾回收器,观察 Full GC 频率变化。例如 G1 的 -XX:+PrintGC 会输出 Pause Full (G1 Evacuation Pause) 事件。






