本文為博主原創,未經允許不得轉載:
1.jmap的使用
Jmap 可以用來查看內存信息,實例個數以及占用內存大小.
jmap -histo[:live] 打印每個class的實例數目,內存占用,類全名信息. VM的內部類名字開頭會加上前綴”*”. 如果子參數加上live后,只統計活的對象數量.
命令:
jmap -histo pid // 或
jmap -histo:live pid
num:序號
instances:實例數量
bytes:占用空間大小
class name:類名稱,[C is a char[],[S is a short[],[I is a int[],[B is a byte[],[[I is a int[][]
2. 查看堆信息:
jmap -heap pid

3. 堆內存dump到指定目錄,並導入到 jvisualvm
jmap ‐dump:format=b,file=eureka.hprof pid
或
jmap ‐dump:format=b,file=eureka.tdump pid
dump生成的文件可以用jvisualvm命令工具導入該dump文件分析: 打開 jdk 的bin目錄的 jvisualvm 工具,選擇文件,再選擇裝入,
並選中對應的文件類型,即可進行導入文件,分析內存對象。
4. 可以使用指定的啟動參數,將運行時的內存溢出主動導出到dump文件中
‐XX:+HeapDumpOnOutOfMemoryError ‐XX:HeapDumpPath=D:\jvm.dump