jmap名称:Java Memory Map(内存映射)
官方文档:https://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jmap.html
功能描述:
内容太多,直接看前辈们的总结:
JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释
https://www.cnblogs.com/kxm87/p/7205414.html
下面是我的一个小小实践:
1.使用 jmap -dump:format=b,file=filename pid 命令将堆快照文件下载到本地
[root@hadoop ~]# jmap -dump:format=b,file=/root/heap.hprof 3346 #导出堆快照文件
Dumping heap to /root/heap.hprof ...
Heap dump file created
[root@hadoop ~]# ll #查看
total 8572
-rw------- 1 root root 4365247 Apr 9 08:15 heap.hprof
[root@hadoop ~]# sz heap.hprof #将文件下载到本地
2.使用JVM自带的JVisualVM工具查看堆快照文件
在%JAVA_HOME%/bin目录下双击jvisualvm.exe打开-->文件-->装入-->选择Dump文件类型-->找到堆快照文件-->打开
在类栏中找到你要查看的类名
双击进入实例数栏-->查看统计出的实例化的对象数目,分析对象的引用找到是谁在实例化此对象,从而找到产生大对象的原因。