簡體   English   中英

XX:+ HeapDumpOnOutOfMemoryError最大文件大小限制

[英]XX:+HeapDumpOnOutOfMemoryError Max file size limit

我正在運行帶有XX:+HeapDumpOnOutOfMemoryError JVM標志的Java進程,並看到以下輸出:

java.lang.OutOfMemoryError: Java heap space
Dumping heap to /local/disk2/heaps/heapdump.hprof ...
Dump file is incomplete: file size limit

有辦法解決這個問題嗎?

-XX:+HeapDumpOnOutOfMemoryError命令行選項告訴HotSpot VM在無法滿足Java堆或永久代的分配時生成堆轉儲。 運行此選項沒有任何開銷,因此它對於OutOfMemoryError需要很長時間才能浮出水面的生產系統非常有用。

為了解決您面臨的具體問題,您可以使用以下糾正措施之一:

測量1: XX:HeapDumpSegmentSize

-XX:HeapDumpSegmentSize選項在生成分段HPROF堆轉儲時指定適當的段大小。

格式

-XX:HeapDumpSegmentSize =大小[K | K] [M | M] [G | G]

java -XX:+HeapDumpOnOutOfMemory -XX:HeapDumpSegmentSize=512M myApp

默認值
1 GB

測量2 -XX:SegmentedHeapDumpThreshold

當堆使用量大於指定大小時,-XX:SegmentedHeapDumpThreshold選項會生成分段堆轉儲(.hprof文件,1.0.2格式)。

需要分段的HPROF轉儲格式才能正確生成包含4 GB以上數據的堆轉儲。 如果-XX:SegmentedHeapDumpThreshold選項的值設置為大於4 GB,則可能無法正確生成堆轉儲。

格式
-XX:SegmentedHeapDumpThreshold =大小

java -XX:SegmentedHeapDumpThreshold=512M myApp

默認值
2 GB

確切失敗消息的一個簡單原因可能是:
轉儲目錄中沒有足夠的空間。

如果不通過JVM參數-XX:HeapDumpPath(參見文檔 )更改轉儲目錄,則轉儲目錄是當前工作目錄。

暫無
暫無

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

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