首先通过
- jstat-gcutilpid1000
可以查看GC情况。不需要额外的工具。这样可以看看是不是有大量FullGC
如果却是存在大量FullGC,那么可以直接查看内存
- jmap-histopid|more
来看看那些对象大量存在回收不掉。
除此之外,也有可能是某些资源链接问题,比如缓存连接,数据库连接 耗尽,
导致应用等待。可以通过
- jstackpid
看看线程是不是都堵住了。
/usr/java/jdk1.6.0_13/bin/jmap -heap 进程ID
/usr/java/jdk1.6.0_13/bin/jmap -histo 进程ID> 进程ID.jmap(导入此文本)
/usr/java/jdk1.6.0_13/bin/jmap -histo:live 进程ID > 进程ID.jmap(导入此文本)
另外可参考以下两个文章: