簡體   English   中英

hprof(堆轉儲大小)遠小於分配的堆

[英]hprof (heap dump size) considerably smaller than heap allocated

我一直在分析 java.lang.OutOfMemoryError: Java heap space for our service 並嘗試通過 Eclipse MAT 工具挖掘堆轉儲。

我們的服務使用 8G 堆運行,生成的堆轉儲大小僅為 500 MB。

以下是 JVM 命令行標志: -XX:-DoEscapeAnalysis -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/tmp -XX:InitialHeapSize=8589934592 -XX:MaxGCPauseMillis=10 -XX:MaxHeapSize=8592942964NewSize -XX:OnOutOfMemoryError=/bin/kill -9 %p -XX:+PrintClassHistogram -XX:-PrintCommandLineFlags -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:SurvivorRatio=8 - XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC

堆轉儲大小:-rw------- 1 taxadm amazon 557201181 Sep 16 15:10 java_pid4026.hprof

這是正確的堆轉儲嗎? 因為我們的服務極不可能嘗試分配 7.5 GB 陣列?

謝謝你的幫助

這聽起來太小了,您確定您的內存不足不是由於 PermGen Space OOM 造成的嗎? 當您在 OOM 發生后很久手動生成轉儲文件時,生成的轉儲文件可能很小,但您的情況並非如此。

以防萬一有人最終在這里尋找:

java.lang.OutOfMemoryError:Java 堆空間

像我一樣:使用XX:+HeapDumpOnOutOfMemoryError很重要。 我的代碼意外地創建了無限循環,並錯誤顯示沒有錯誤、沒有泄漏和實際上低堆使用率使用jmap -heap 另一方面,在 OOM 上自動完成的 heapdump 很大並且清楚地顯示(在 MAT 中)出了什么問題。

暫無
暫無

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

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