5.1.4.查看GC日志
1.虚拟机提供了 -XX:+PrintGCDetails 参数,告诉虚拟机在发生垃圾收集行为时打印内存回收日志,并且在进程退出的时候输出当前的内存各区域分配情况。
2.每个收集器的日志格式有所不同,但是虚拟机设计者为了方便用户阅读,将各个收集器的日志都维持一定的共性。例如
日志一:
33.125:[GC [DefNew:3324->152K(3712K),0.0025925 secs] 3324K->152K(11904K),0.0031680 secs]
日志二:
100.67:[Full GC [Tenured:0K->210K(10240K),0.0149141 secs]4603K->210K(19456K),[Perm:299K->2999K(21248K)],0,015007 secs] [Times:
user=0.01 sys=0.00,real=0.02 secs]
解释:1最前面的数字“33.125:”和“100.67:” 表示GC发生的时间,表示从Java虚拟机启动以来经过的秒速
2. “[GC” 和 “[Full GC ‘说明垃圾收集的停顿类型,而不是区分新生代和老年代。
Full 表示这次GC发生了Stop The World类型
若是调用System.gc()方法所触发的收集,那么将显示 Full GC(System)
3. [DefNew [Tenured [Perm 表示GC发生的区域 此处名称与所用收集器相关
新生代: Serial(Client下默认的收集器): Default New Generation 即显示 DefNew
ParNew : ParNew New Generation 即显示 ParNew
Parallel Scavenge: 显示PSYougGen
老年代:与新生代相似
4. 方括号以内 3324->152K(3712K) :GC前该内存区域已使用容量->GC后该内存区域已使用容量(该内存区域总容量)
方括号以外 4603K->210K(19456K) :GC前Java堆已使用容量->GC后Java堆已使用容量(Java堆总容量)
5. 0,015007 secs] [Times: user=0.01 sys=0.00,real=0.02 secs]
表示GC所占用的时间 [Times: user=0.01 sys=0.00,real=0.02 secs]是详细描述所用时间