簡體   English   中英

XX:HeapDumpSegmentSize和XX:SegmentedHeapDumpThreshold的用法

[英]Usage of XX:HeapDumpSegmentSize and XX:SegmentedHeapDumpThreshold

我遇到一個問題,由於以下消息,轉儲失敗:

java.lang.OutOfMemoryError: Java heap space
Dumping heap to /usr/local/webapp/logs/java_pid<MY_PID>.hprof ...
Dump file is incomplete: file size limit

我在這里找到了類似的質量檢查: XX:+ HeapDumpOnOutOfMemoryError最大文件大小限制 ,但它僅指的是我們可以用來解決此問題的選項,而不是如何使用它們。 在網絡上搜索也無濟於事,因為這些方面的信息很少。 更糟糕的是,我很少對它們進行測試,因為該問題很少發生。

我發現我的應用程序達到其最大堆大小(8GB)並嘗試轉儲堆,但是由於上述錯誤而失敗,並且轉儲的文件大小僅為2.2GB,這似乎是不完整的,並且所有工具(例如jhat,jconsole,jvirtualvm) )無法打開它。

如何通過使用選項XX:HeapDumpSegmentSizeXX:SegmentedHeapDumpThreshold來避免此問題?

環境

  • Java 1.8.0_71
  • 似乎相關的選項:
    • -Xmx8196m
    • -XX:+HeapDumpOnOutOfMemoryError
    • -XX:HeapDumpPath=$LOG_DIR
    • -XX:OnOutOfMemoryError="kill -9 %p"

HeapDumpSegmentSizeSegmentedHeapDumpThreshold是開發人員選項,不能在生產JVM中更改。 這些選項仍然無濟於事,因為它們不是將堆轉儲拆分成多個文件,而是關於在一個文件內創建多個段。

確保ulimit -f足夠大以創建8G文件。

暫無
暫無

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

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