jdk的jmap指令使用介绍
1.基本介绍
- jmap 主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节.jmap命令可以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小
- 可以将VM 中的heap(堆)以二进制格式输出到文本中.
2.命令格式和参数说明
- 命令格式:
-
jmap [ option ] pid 打印指定进程(pid)的内存快照
-
jmap [ option ] executable(可执行程序) core(dump文件)
-
jmap [option] serverId@ip 远程主机上服务号为(serverId)的debug服务的内存快照(可能由多个debug服务)
- 参数说明
-
-heap:打印jvm heap的情况(heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况).
例如: jmap -heap 12660(pid) ![54056529999](
-
-histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.
例如:jmap -histo 12660(pid) /jmap -histo:live 12660
![54056580989]( -
-finalizerinfo:打印正等候回收的对象的信息
![54056597993]( -
–clstats:打印classload和jvm heap长久层的信息. 包含每个classloader的名字,活泼性,地址,父classloader和加载的class数量.
例如:jmap -clstats 12660
![54056630554]( -
-dump:[live,]format=b,file=outfile :使用hprof二进制形式,输出jvm的heap内容到指定文件. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.
例如:jmap -dump:live,format=b,file=G:\test.dump 12660
![54060547595]( -
-h:jmap的使用帮助
例如:jmap -h -
-F:强制输出已经挂起的进程状况
-
-J:递参数给jmap启动的jvm.
例如:jmap -J-d64 -heap pid(64位机上使用)
3.使用场景
- jmap -histo pid多次使用对比分析可以看到对象的回收状况
- jmap -dump:format=b,file=outfile pid可以将指定进程的内存heap输出到outfile文件里,再配合MAT(内存分析工具)分析内存状况
4.参考
https://blog.csdn.net/fenglibing/article/details/6411953
https://blog.csdn.net/gtuu0123/article/details/6039964
https://www.cnblogs.com/kongzhongqijing/articles/3621163.html