0

我最近了解了-XX:+HeapDumpOnOutOfMemoryErrorVM 参数,并被告知应该将它添加到 HotSpot JVM 中,因为默认情况下它是关闭的。我的一位同事评论说也许我们不应该这样做,因为他听说这样做有一些陷阱,但他不记得那是什么。我讨厌这样含糊不清的陈述,但在做出最终决定之前,我正在努力尽职调查,所以我正在做一些调查。

我能找到的大多数对它的引用更多地是关于如何使用它(以及转储文件所在的位置),并且没有谈到使用它的任何问题。这个 SO question 引用了一个不同的论点,但答案似乎也与这个论点相关,并暗示没有问题:为什么这个 Hotspot JVM 选项不是默认选项?-XX:+PrintConcurrentLocks

有谁知道不转的理由-XX:+HeapDumpOnOutOfMemoryError

4

2 回答 2

1

有了这个特殊的标志,我认为没有任何问题(不知道其他标志)。这甚至不是诊断标志。它只是在 JVM 遇到 OutofMemoryError 时打印 GC/Memory 状态(仅发生一次,并且在 JVM 停止时也会发生)。

您需要接受的一件事是,它可能(或)可能不会按预期运行,因为它是 -XX 和

使用 -XX 指定的选项不稳定,如有更改,恕不另行通知

于 2012-11-16T16:38:50.250 回答
1

主要的缺点是每次新程序遇到此错误时(该 JVM 第一次发生此错误)时,它都会创建一个大文件。如果你有一个 2 GB 的堆,它每次都可以创建一个那么大的文件,用你不需要的堆转储来填满磁盘空间。由于它仅用于调试/开发目的,因此对大多数最终用户无用。

于 2012-11-16T17:02:50.690 回答