Java 虛擬機內存診斷

虛擬機診斷相關命令

jmap -heap

打印heap的概要信息,GC使用的算法,heap的配置及使用狀況java

jmap -heap pid

jmap -histo

統計各個類的實例數目以及佔用內存,並按照內存使用量從多至少的順序排列算法

jmap -histo:live pid

jmap -dump

把堆內存的使用狀況 dump 到文件中,live 只保存堆中的存活對象dom

jmap -dump:live,format=b,file=dump.bin pid

輸出 GC 日誌參數

  • 當堆內存空間溢出時輸出堆的內存快照
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/java/logs/
  • 輸出 GC 詳細日誌,loggc 指定日誌路徑
-XX:PrintGCDetails -Xloggc:/data/java/logs/

eclipse MAT

MAT 計算對象佔據內存分爲 Shallow heap 和 Retained heap 兩種方式eclipse

  • Shallow heap:對象自身所佔據的內存
  • Retained heap

指的是當對象再也不被引用時,垃圾回收器所能回收的總內存,包括對象自身所佔據的內存,以及僅可以經過該對象引用到的其餘對象所佔據的內存日誌

MAT 包含了兩個比較重要的視圖 直方圖(histogram)和支配樹(dominator tree)code

  • 直方圖

MAT 的直方圖相似 jmap -histo 命令輸出的結果,可以展現各個類的實例數目以及這些實例的 Shallow heap 總和orm

  • 支配樹
相關文章
相關標籤/搜索