jmap主要用于打内存快照,即dump文件。

用法:

1
2
3
4
# 查找JVM进程
jps
# 打内存快照
jmap -dump:format=b,file=webservice.dump pid

另外,还可以利用jmap主动触发Full GC

1
jmap -histo:live pid

对于dump文件,需要使用特定工具进行查看,主要是IBM的HeapAnalyzer、JDK自带的VirtualVM以及MemoryAnalyzer(MAT)。

HeapAnalyzer主要看占用最大的类,分析内存泄露问题。

VirtualVM主要用来针对某个类的实例进行深入分析。

MemoryAnalyzer暂时还没用过。现在主要用的就是MAT,按照线程维度查看内存占用能很快速的定位问题。