jmap名称:Java Memory Map(内存映射)
官方文档:https://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jmap.html
功能描述:
内容太多,直接看前辈们的总结:
java命令--jmap命令使用(这篇文章写得非常好)
https://www.cnblogs.com/kongzhongqijing/articles/3621163.html
Java虚拟机的内存组成以及堆内存介绍
http://www.hollischuang.com/archives/80
Java GC工作原理
http://www.hollischuang.com/archives/76
JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释
https://www.cnblogs.com/kxm87/p/7205414.html
JDK,JRE,JVM区别与联系
http://www.hollischuang.com/archives/78
【JVM】12_空间分配担保(没看懂?)
https://blog.youkuaiyun.com/u013295276/article/details/78468790?locationNum=1&fps=1
下面是我的一个小小实践:
1.使用 jmap -dump:format=b,file=filename pid 命令将堆快照文件下载到本地
1 <p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
<p>6</p>
<p>7</p>
</td>
<td>
<p><code>[root@hadoop ~]</code><code># jmap -dump:format=b,file=/root/heap.hprof 3346 #导出堆快照文件</code></p>
<p><code>Dumping heap to </code><code>/</code><code>root</code><code>/</code><code>heap.hprof ...</code></p>
<p><code>Heap dump </code><code>file</code> <code>created</code></p>
<p><code>[root@hadoop ~]</code><code># ll #查看</code></p>
<p><code>total </code><code>8572</code></p>
<p><code>-</code><code>rw</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code> <code>1</code> <code>root root </code><code>4365247</code> <code>Apr </code><code>9</code> <code>08</code><code>:</code><code>15</code> <code>heap.hprof</code></p>
<p><code>[root@hadoop ~]</code><code># sz heap.hprof #将文件下载到本地</code></p>
</td>
</tr></tbody></table></div><p>2.使用JVM自带的JVisualVM工具查看堆快照文件</p>
|
在%JAVA_HOME%/bin目录下双击jvisualvm.exe打开-->文件-->装入-->选择Dump文件类型-->找到堆快照文件-->打开

在类栏中找到你要查看的类名

双击进入实例数栏-->查看统计出的实例化的对象数目,分析对象的引用找到是谁在实例化此对象,从而找到产生大对象的原因。
