如何列印堆疊資訊到hprof檔
執行程式增加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 2021Snapshot read, resolving...Resolving 818890 objects...Chasing references, expect 163 dots...................................................................................................................................................................Eliminating duplicate references...................................................................................................................................................................Snapshot resolved.Started HTTP server on port 7000Server 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 檔案
以上是Mac平台下如何分析Java堆轉儲(hprof)檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!