理解GC日志

33.125:[GC[DefNew:3324K->152K(3712K),0.0025925 secs]3324K->152K(11904K),0.0031680 secs]


100.667:[Full GC[Tenured:0K->210K(10240K),0.0149142 secs]4603K->210K(19456K),[Perm:2999K->2999K(21248K)],0.0150007 secs][Times:user=0.01 sys=0.00,real=0.02 secs]
100.667:[Full GC(System)[Tenured:0K->210K(10240K),0.0149142 secs]4603K->210K(19456K),[Perm:2999K->2999K(21248K)],0.0150007 secs][Times:user=0.01 sys=0.00,real=0.02 secs]

33.125和100.667:GC发生的时间,从Java虚拟机启动以来经过的秒数;


GC|Full GC:垃圾收集的停顿类型,如果有Full,则说明发生的STW,如果是调用了System.gc(),则会显示Full GC(System);


DefNew|Tenured:表示发生GC的区域,这GC垃圾收集器相关,DefNew表示使用的Serial收集器中新生代名为“Default New Generation”,ParNew表示使用了ParNew收集器,PSYoungGen表示使用了Parallel Scavenge收集器;


3324K->152K(3712K):GC前该内存区域已使用容量->GC后该内存区域已使用容量(该内存区域总容量);


0.0025925 secs:该内存区域GC占用的时间,单位秒;


3324K->152K(11904K):GC前Java堆已使用容量->GC后Java堆已使用容量(Java堆总容量);


0.0031680 secs:该Java堆GC占用的时间,单位秒;


[Times:user=0.01 sys=0.00,real=0.02 secs]:与上述时间类似,只是更详细,user为用户态消耗的CPU时间,sys为内核态消耗的时间,real表操作从开始到结束所经过的墙钟时间(Wall Clock Time)(墙钟时间包括各种非运算的等待耗时,例如等待磁盘I/O,等待线程阻塞,而CPU时间不包含这些耗时,但当系统有多CPU或多核的话,多线程操作会叠加这些CPU时间,所以有可能会出现user或sys时间超过real时间);

你可能感兴趣的:(深入理解Java虚拟机,GC日志)