jmap
- 作用:監控記憶體的java對象。
- 文法:jmap [option]
-
說明: option:指令選項,常用選項如下:
-heap 列印Java堆概要資訊,包括使用的GC算法、堆配置參數和各代中堆記憶體使用情況;
-histo[:live] 列印Java堆中對象直方圖,通過該圖可以擷取每個class的對象數目,占用記憶體大小和類全名資訊,帶上:live,則隻統計活着的對象
-
舉例如下:
jmap -histo 5352
注:1. 該指令令是在cmd視窗中執行的(Linux下是在終端中執行)
2. 可以通過jps指令擷取java相關程序id(程序id是作業系統管理程序的唯一辨別)
3. 相關jps的指令參數可以通過jps -help指令擷取說明
結果如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSP9cnW1xWbZZmRHplZk1mYoR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL3IDN2MTOycTMxIzNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
class name列出現了[C、[B、[L等很奇怪的内容,這些屬于非自定義類,具體為:
-permstat: 列印永久代統計資訊
-finalizerinfo:列印等待回收的對象資訊,如下指令:jmap -finalizerinfo 5352
結果如下
說明: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子選項