GC日志解读

GC日志根据不同的JDK有不同的日志格式,但是总得来说都是为了反馈GC前的内存使用量和GC后的内存使用量,GC所耗时的时间等,例如解读如下GC日志中的一部分,表示了普通GC和完全GC两次内存垃圾回收信息:

普通GC日志:

26.701:[GC 26.702:[DefNew:9073k->488k(9088k),0.0026632secs]29892k->21886k(130112k),0.0027223secs][Times:user=0.00 sys=0.00,real=0.00secs]

其中DefNew:9073k->448k(9088k) 代表年轻代从9073k回收至488k,回收了8585k的内存,而JVM分配的年轻代内存总大小是9088k,而29892k->21886k(130112k),0.0027223secs]代表总内存从29892回收至21886k,而当前JVM分配的堆内存总大小是130112k,回收耗时0.0027223秒。

完全GC日志:

26.723:[Full GC 26.723:[Tenured:21398k->21698k(121024k),0.1210303secs]24765->21698k(130112k),[Perm:53247k->53247k],0.1310977secs][Times:user=0.14 sys=0.00,real=0.14secs]

其中Full GC代表是完全GC,Tenured:21398k->21698k(121024k)代表年老代内存的回收情况,Perm代表永久区的回收情况。

由于普通GC只回收部分垃圾对象,因此回收完毕后,系统中仍然存在大量的垃圾对象,而完全GC是系统彻底的对垃圾对象进行回收,回收完毕后,垃圾对象所占用的内存得到彻底的回收。此时JAVA内存真是反映了JAVA对象所占用的内存的大小,因此在做内存泄露的分析时,我们只需要分析FULL GC日志即可。

你可能感兴趣的:(计算机基础,GC-日志)