1、查看堆内存各区域的使用率以及GC情况
jstat -gcutil -h20 pid 1000
S0:Survivor 区 0 的使用比例;
S1:Survivor 区 1 的使用比例;
E:Eden 区的使用比例;
O:老年代的使用比例;
M:元数据区的使用比例;
CCS:压缩类空间的使用比例;
YGC:从应用程序启动到采样时发生的 Young GC 次数;
YGCT:从应用程序启动到采样时用于 Young GC 的时间(秒);
FGC:从应用程序启动到采样时发生的 Full GC 次数;
FGCT:从应用程序启动到采样时用于 Full GC 的时间(秒);
GCT:从应用程序启动到采样时用于垃圾回收的总时间(秒)。
这些指标可以帮助你监控 JVM 的垃圾回收情况和内存使用情况。其中,S0 和 S1 是 Survivor 区的两个区域,E 是 Eden 区,O 是老年代,M 是元数据区,CCS 是压缩类空间,YGC 和 YGCT 是 Young GC 的次数和时间,FGC 和 FGCT 是 Full GC 的次数和时间,GCT 是所有 GC 的总时间。
2、查看堆内存中的存活对象,并按空间排序
jmap -histo pid | head -n20
3、 dump堆内存文件
jmap -dump:format=b,file=fileName pid
可以使用JVisualVM、MAT、Jprofiler工具分析