Full GC(Full Garbage Collection) 是 Java 虚拟机(JVM)中的一种垃圾回收机制,它会清理整个堆内存(包括新生代和老年代),通常会导致应用程序暂停(Stop-The-World)。Full GC 的频繁发生会严重影响系统性能,因此需要及时排查和优化。以下是排查 Full GC 的常见方式:
1. 监控工具
使用监控工具可以实时观察 JVM 的内存使用情况和 GC 行为。
(1)JVM 自带的工具
-
jstat:
- 使用
jstat -gc <pid> <interval> <count>
查看 GC 统计信息。 - 示例:
jstat -gc 12345 1000 10 # 每隔 1 秒输出一次 GC 信息,共输出 10 次
- 关键指标:
FGC
:Full GC 次数。FGCT
:Full GC 总耗时。GCT
:GC 总耗时。
- 使用
-
jmap:
- 使用
jmap -heap <pid>
查看堆内存使用情况。 - 使用
jmap -histo:live <pid>
查看存活对象的直方图。
- 使用
(2)可视化工具
- VisualVM:
- 连接到 JVM 进程,实时监控堆内存、GC 行为、线程状态等。
- JConsole: