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

没有评论:
发表评论