HotSpot JVM选项HeapDumpOnOutOfMemoryError - 有什么问题吗?

时间:2012-11-16 16:34:52

标签: java out-of-memory jvm-arguments

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

我能找到的大多数对它的引用都更多地是关于如何使用它(以及转储文件所在的位置),并且不讨论使用它的任何问题。这个问题提到了一个不同的论点,但答案似乎也与这个问题相关,并暗示没有问题:Why is this Hotspot JVM option not the default? -XX:+PrintConcurrentLocks

有没有人知道有什么理由不转-XX:+HeapDumpOnOutOfMemoryError

2 个答案:

答案 0 :(得分:1)

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

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

  

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

答案 1 :(得分:1)

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