GC 日志解读/分析

打印gc log的详细信息 

Java代码   收藏代码
  1. set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -XX:+PrintGCDetails  



或 

引用
set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -verbose:gc -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError 


如果真是内存泄漏,系统最终会抛OutOfMemory, 加这个-XX:+HeapDumpOnOutOfMemoryError (jdk1.5以上)可以得到heap dump. 这个dump纪录了所有在OutOfMemory时存在于内存中的对象。用普通的jhat之类的工具分析dump文件不够好。推荐使用SAP Memory Analyzer。用这个工具你可以比较快的定位原因。 

gc日志分析 

引用
[GC [DefNew: 35592K->1814K(36288K), 0.0326932 secs] 38508K->7792K(520256K), 0.0336419 secs]



第一个箭头:35592K->1814K(36288K),箭头指向的是新生段的内存占用情况; 
第二个箭头:38508K->7792K(520256K),箭头指向的是回收后的内存占用情况。 
圆括号中通常指的是当前申请的内存大小。 

引用
[GC [<collector>: <starting occupancy1> -> <ending occupancy1>, <pause time1> secs] <starting occupancy3> -> <ending occupancy3>, <pause time3> secs]


<collector>GC收集器的名称 

<starting occupancy1> 新生代在GC前占用的内存 
<ending occupancy1> 新生代在GC后占用的内存 
<pause time1> 新生代局部收集时jvm暂停处理的时间 

<starting occupancy3> JVM Heap 在GC前占用的内存 
<ending occupancy3> JVM Heap 在GC后占用的内存 
<pause time3> GC过程中jvm暂停处理的总时间 

 

如果回收总量相等,就表示100%的收回,没有任何新生代的对象被提升到中生代或者永久区。而本例中表示3062K没有被回收,即2062K 新生代内容被提升到中生代。 


Java代码   收藏代码
  1. [Full GC 873087K->873087K(955648K), 4.1838200 secs]  
  2. [Full GC 873087K->871781K(955648K), 4.1683140 secs]  
  3. [Full GC 873087K->873087K(955648K), 4.2085010 secs]  
  4. [Full GC 873087K->872260K(955648K), 4.2084700 secs]  
  5. [Full GC 873081K->873081K(955648K), 4.2623640 secs]  
  6. [Full GC 873081K->872408K(955648K), 4.3412570 secs]  
  7. 2011-08-08 17:04:10,819 ERROR [com.koolearn.util.cache.AliMemCacheEngine.get(AliMemCacheEngine.java:164)] - <>  
  8. [Full GC 873087K->873087K(955648K), 4.3155510 secs]  
  9. [Full GC 873087K->872481K(955648K), 4.0971750 secs]  
  10. [Full GC 873087K->873087K(955648K), 4.1474260 secs]  
  11. [Full GC 873087K->872766K(955648K), 4.3128090 secs]  
  12. java.lang.OutOfMemoryError: Java heap space  
  13. [Full GC 873087K->873087K(955648K), 4.3855320 secs]  
  14. [Full GC 873087K->871522K(955648K), 4.2014260 secs]  
  15. [Full GC 871649K->871649K(955648K), 4.5445160 secs]  
  16. [Full GC 873087K->873087K(955648K), 4.3851440 secs]  
  17. [Full GC[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor778]  
  18. [Unloading class sun.reflect.GeneratedSerializationConstructorAccessor779]  
  19.  873087K->871942K(955648K), 4.1766480 secs]  
  20. [Full GC 873087K->872056K(955648K), 4.4511170 secs]  
  21. [Full GC 873087K->873087K(955648K), 4.3548710 secs]  
  22. [Full GC 873087K->872185K(955648K), 4.5506940 secs]  



Full GC 即全量GC,垃圾回收分小GC和Full GC。前者针对年轻代,后者针对年老代。FULL GC出现的很多有时候是因为你应用中2M以上的对象比较多。

 

文献转自:http://wentao365.iteye.com/blog/1142837

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值