最后,总结下排查内存故障的方法和技巧有哪些:
JMAP 使用:
jmap [pid]
•jmap -histo:live [pid] >a.log
•jmap -dump:live,format=b,file=xxx.xxx [pid]
jmap -dump:live,format=b,file=/oracle/wls/gc/jmap.dump
用得最多是后面两个。其中,jmap -histo:live [pid] 可以查看当前Java进程创建的活跃对象数目和占用内存大小。
jhat使用:
1、top命令:Linux命令。可以查看实时的内存使用情况。
2、jmap -histo:live [pid],然后分析具体的对象数目和占用内存大小,从而定位代码。
3、jmap -dump:live,format=b,file=xxx.xxx [pid],然后利用MAT工具分析是否存在内存泄漏等等。
jhat -J-Xmx2048m /oracle/wls/gc/jmap.dump