文章目录
一、作用
监控内存内的Java对象
二、语法
1.命令格式
jmap [option] <pid>
2.jps
①在搜索栏中输入cmd,回车打开
②输入jps出现如下界面
③其中4320是eclipse的进程id(即命令格式中的pid)
3.option相关参数
①-help
帮助工具
②-heap
打印Java堆概要信息,包括使用的GC算法、堆配置参数和各代中堆内存使用情况
③-histo[:live]
打印Java堆中对象直方图,通过该图可以获取每个class的对象数目,占用内存大小和类全名信息,带上:live,则只统计活着的对象
jmap -histo:live 4320 > out.txt//输入代码进行测试
将输出的结果放入out.txt文件中(文件所在根目录C:\Users\kjw,可通过全盘搜索查找)
④-clstats
打印永久代统计信息、
JDK7以前还有永久代,JDK8以后永久代被元空间代替
故-permstat命令变为-clstats
上述过程后Eclipse暂停服务
⑤-finalizerinfo
打印等待回收的对象信息
Number of objects pending for finalization: 0
//说明当前F-QUEUE队列中并没有等待Fializer线程执行finalizer方法的对象
⑥-dump:(dump-options)
以hprof二进制格式将Java堆信息输出到文件内,该文件可以用MAT、VisualVM或jhat等工具查看
dump-options选项:
live 只输出活着的对象;不指定,则输出堆中所有对象
format=b 指定输出格式为二进制
file=<file> 指定文件名及文件存储位置
例子如下:
在D盘中生成下图文件
⑦-F
与-dump:<dump-options> <pid>或-histo<pid>一起使用,当<pid>没有响应时,强制执行;
注意:不支持live子选项