天天看點

JVM記憶體監管工具之jmap使用詳解jmap

jmap

  1. 作用:監控記憶體的java對象。
  2. 文法:jmap [option]
  3. 說明: option:指令選項,常用選項如下:

    -heap 列印Java堆概要資訊,包括使用的GC算法、堆配置參數和各代中堆記憶體使用情況;

    -histo[:live] 列印Java堆中對象直方圖,通過該圖可以擷取每個class的對象數目,占用記憶體大小和類全名資訊,帶上:live,則隻統計活着的對象

  4. 舉例如下:

    jmap -histo 5352

注:1. 該指令令是在cmd視窗中執行的(Linux下是在終端中執行)

2. 可以通過jps指令擷取java相關程序id(程序id是作業系統管理程序的唯一辨別)

3. 相關jps的指令參數可以通過jps -help指令擷取說明

結果如下:

JVM記憶體監管工具之jmap使用詳解jmap

class name列出現了[C、[B、[L等很奇怪的内容,這些屬于非自定義類,具體為:

JVM記憶體監管工具之jmap使用詳解jmap

-permstat: 列印永久代統計資訊

-finalizerinfo:列印等待回收的對象資訊,如下指令:jmap -finalizerinfo 5352

結果如下

JVM記憶體監管工具之jmap使用詳解jmap
說明:Number of objects pending for finalization: 0 說明目前F-QUEUE隊列中并沒有等待Fializer線程執行finalizer方法的對象。

-dump: 以hprof二進制格式将Java堆資訊輸出到檔案内,該檔案可以用MAT、VisualVM或jhat等工具檢視;

dump-options選項:

1. live 隻輸出活着的對象;不指定,則輸出堆中所有對象

2. format=b 指定輸出格式為二進制

3. file= 指定檔案名及檔案存儲位置,例如:jmap -dump:live,format=b,file=D:\heap.bin

-F 與-dump: 或-histo一起使用,當沒有響應時,強制執行;注意:不支援live子選項