About me

我的照片
目前就职于杭州某电子商务公司,工作兴趣包括高并发分布式架构,JVM性能优化等方面。

2012年1月20日星期五

JAVA进程内存泄漏分析思路


  1. 有无使用Native内存。通常需要通过对比进程的VSZ大小和java堆大小来发现。java里面的DirectByteBuffer是一种冰山对象,它在java heap中很小,但却引用了一块在native内存中的区域,所以你通过heap dump有可能根本看不出问题。java在创建DirectByteBuffer时,如果native内存不足,java会显式调用System.gc()来执行Full gc,这包括回收native内存。如果应用很不幸地增加了启动参数 -XX:+DisableExplicitGC,JVM就会抛出OOM异常。
  2. java堆有无泄漏。分析Dump。
需要用到的命令:top,pmap,jstat,jmap

没有评论:

发表评论