深入理解Java 虚拟机(周志明)笔记(五)——垃圾收集器(四)

时间:2023-01-02 09:13:43
 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]是详细描述所用时间