Java

在生產中使用 HeapDumpOnOutOfMemoryError 是否合適?

  • December 20, 2018

我們一直在努力診斷我們在其中一台生產伺服器上遇到的 OutOfMemoryError 的原因。到目前為止,我們在浸泡測試中重現該問題的嘗試都失敗了,我們正在考慮-XX:+HeapDumpOnOutOfMemoryError在我們的生產伺服器上啟用,這樣如果它再次發生,至少我們會有一些數據。

在生產伺服器上啟用此設置是否明智?

查看文件

B.1.2 -XX:+HeapDumpOnOutOfMemoryError 選項

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

您還可以在執行時使用 jconsole 實用程序中的 MBeans 選項卡指定此選項。

堆轉儲是HPROF二進制格式,因此可以使用任何可以導入此格式的工具對其進行分析。例如,jhat 工具可用於對轉儲進行初步分析。

-XX:+HeapDumpOnOutOfMemoryErrorflag 不會在執行時引入性能或安全問題。OutOfMemoryError只有在發生後才檢查標誌。

-XX:HeapDumpPath您可以使用相應的標誌指定保存文件的實際路徑。(無論文件保存在哪裡,請確保文件系統和/或 Java 程序具有必要的權限配置以便能夠在那裡寫入。)

引用自:https://serverfault.com/questions/647771