簡體   English   中英

有沒有辦法分析截斷的Java堆轉儲(hprof文件)?

[英]Is there any way to analyze a truncated Java Heap Dump (hprof file)?

在我的工作中,我們遇到了難以重現的OOM問題。 或者,更准確地說,它很容易在一個系統上重現,使得該系統無法使用,但在相同的輸入下難以在其他任何地方重現。

應用程序使用服務包裝器作為服務運行。 我們確實設法更改配置以啟動它,並選擇在OOM上輸出堆轉儲文件,但不幸的是,它們被截斷,很可能是由於服務包裝器超時並在寫入文件時終止進程。 這很明顯,因為最大內存設置為1GB,而hprof文件小到700MB,這對於OOM上的整個堆來說太小了。

需要花費大量資金來進一步配置包裝器以使java進程有更長的時間來寫出堆,但我們正在使用這兩個選項來實現這一點:

wrapper.jvm_exit.timeout=600
wrapper.shutdown.timeout=600

問題是,我能用截斷的hprof文件做些什么有用嗎? Eclipse MAT扼殺它們。 Jhat似乎加載了它們,但隨后只顯示了3個大小為0的Java.Object實例。 我試過YourKit,它無法寫出它的oids文件。

在我看來,這些文件應該包含一些有用的,可訪問的信息。 有沒有一個工具可以讀取那里有什么?

感謝您的時間!

分析我到目前為止遇到的轉儲文件的最佳選擇是像vim這樣的文本編輯器。

使用Jpofiler( https://www.ejtechnologies.com/products/jprofiler/overview.html )。 它不是免費的,但它有一個試用期。

實時內存和CPU視圖選項是隔離問題的最佳選擇。 它通常在大型垃圾場上運行得相當好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM