jdk的jmap指令使用介紹

jdk的jmap指令使用介紹

1.基本介紹

  1. jmap 主要用於打印指定Java進程(或核心文件、遠程調試服務器)的共享對象內存映射或堆內存細節.jmap命令可以獲得運行中的jvm的堆的快照,從而可以離線分析堆,以檢查內存泄漏,檢查一些嚴重影響性能的大對象的創建,檢查系統中什麼對象最多,各種對象所佔內存的大小
  2. 可以將VM 中的heap(堆)以二進制格式輸出到文本中.

2.命令格式和參數說明

  1. 命令格式:
  • jmap [ option ] pid 打印指定進程(pid)的內存快照

  • jmap [ option ] executable(可執行程序) core(dump文件)

  • jmap [option] serverId@ip 遠程主機上服務號爲(serverId)的debug服務的內存快照(可能由多個debug服務)

  1. 參數說明
  • -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.使用場景

  1. jmap -histo pid多次使用對比分析可以看到對象的回收狀況
  2. 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章