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