mac平台下怎么分析java堆hprof文件


使用 jdk 自帶的 jhat 命令

如何打印堆棧信息到hprof文件中
運行程序增加VM參數(如何增加VM執行參數,可以查看之前文章):

-XX:+HeapDumpOnOutOfMemoryError # 會打印出現內存溢出異常時,Dump出當前內存堆轉存快找以便分析

步驟1:
在命令行界面,執行以下命令,其中java_pid73912.hprof為文件名稱

jhat java_pid73912.hprof 

會輸出

Reading from java_pid73912.hprof...
Dump file created Thu Apr 08 22:18:08 CST 2021
Snapshot read, resolving...
Resolving 818890 objects...
Chasing references, expect 163 dots...................................................................................................................................................................
Eliminating duplicate references...................................................................................................................................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.

當看出Server is ready. 之后,可以通過 ip + port 地址瀏覽器訪問,我這里是本地,所以是 localhost:7000

在這里插入圖片描述

點擊Show instance counts for all classes (including platform)會展示包含平台的類的的信息

在這里插入圖片描述

點擊Show instance counts for all classes (excluding platform)會展示不包含平台的所有類的信息

在這里插入圖片描述

可以看到我這里占用空間最多的類是 class com.geniu.book.deepinJVM.chapter2.TestHeapOOM$OOMObject有 80 多萬個實例。

其他建議方案:

1)使用idea插件 JProfiler

2)minidump_stackwalk 工具,可以讀取 dump 文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM