查看JVM的GC过程
在启动你的程序的时候,使用-verbose:gc 参数,将程序的 GC情况输出至 log 文本文件中。对log 文件进行简要分析。
输入的参数为“-verbose:gc -Xloggc:gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails”将日志文件输入到gc.log中并且打印时间戳和GC的详细信息。
输出的gc.log文件为:
发现:Minor GC的频率较高,Full GC的频率较低。
Minor GC每次耗费的时间0.01-0.03秒之间,Full GC的每次耗费的时间约为0.13秒。
每次GC前后 heap 中各区域占用情况的变化:
每次Minor GC前后,PSYoungGen区域的占用减少。
每次Full GC前后,ParOldGen区域的占用增加。
用jstat命令行工具的-gc和-gcutil参数
打开cmd,找到jdk的目录下的bin文件夹,在其中执行jstat –gc 22784 250 112每250毫秒查询一次进程22784垃圾收集状况,一共查询112次。其中的22784为pid。
其中:S0C:年轻代中第一个存活区的大小
S1C:年轻代中第二个存活区的大小
S0U:年轻代中第一个存活区已使用的空间 (KB)
S1U:年轻代中第二个存活区已使用的空间 (KB)
EC: Edem区大小
EU: 年轻代中Edem区已使用的空间 (KB)
OC: 老年代大小
OU: 老年代已使用的空间 (KB)
PC: 持久代大小
PU: 持久代已使用的空间 (KB)
YGC: 从应用程序启动到采样时young gc的次数
YGCT: 从应用程序启动到采样时young gc的所用的时间(s)
FGC: 从应用程序启动到采样时full gc的次数
FGCT: 从应用程序启动到采样时full gc的所用的时间