AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
jmap(Memory Map)用来查看堆内存使用状况,一般结合jhat(Java Heap Analysis Tool)使用。语法格式如下: ``` jmap [option] pid jmap [option] executablecore jmap [option] [server-id@]remote-hostname-or-ip ``` 1.没有参数打印进程的类加载器和类加载器加载的持久代对象信息,输出:类加载器名称、对象是否存活(不可靠)、对象地址、父类加载器、已加载的类大小等信息,如下图: ``` jmap pid ``` ![](https://img.kancloud.cn/fa/64/fa64afebe2bedd82e3093ba3c8791f58_1920x784.png) 2.查看进程堆内存使用情况,包括使用的GC算法、堆配置参数和各代中堆内存使用情况。比如下面的例子: ``` jmap -heap pid ``` ![](https://img.kancloud.cn/e4/91/e491c0650bcd0646646ac40bd198ac49_1920x784.png) 3.使用jmap -histo[:live] pid查看堆内存中的对象数目、大小统计直方图,如果带上live则只统计活对象并且会强制执行一次GC,如下: ``` jmap -histo pid jmap -histo:live pid ``` ![](https://img.kancloud.cn/da/83/da83ad60e4c012a7b9926e9772fc0cb7_1920x784.png) ![](https://img.kancloud.cn/2e/f1/2ef1a35d8d3fd445496543959e6c4f34_1920x784.png) class name是对象类型,说明如下: ``` B byte C char D double F float I int J long Z boolean [ 数组,如[I表示int[] [L+类名 其他对象 ``` 还有一个很常用的情况是:用jmap把进程内存使用情况dump到文件中,再用jhat分析查看。jmap进行dump命令格式如下: ``` jmap -dump:format=b,file=dumpFileName pid (文件的后缀建议采用".hprof") ``` ![](https://img.kancloud.cn/64/88/648865b43b9f8ef7edcd41081143066b_1920x784.png) dump出来的文件可以用MAT、VisualVM等工具查看,这里用jhat查看: ``` jhat -port xxxx dumpFileName ``` ![](https://img.kancloud.cn/3b/46/3b460b42b2b1a1cf3ccc0d6207b2b543_1920x784.png) 然后就可以在浏览器中输入主机地址:port查看了: ![](https://img.kancloud.cn/f3/15/f315dab16ed2f08552d7016e18fb7a23_1920x1030.png)