我想指定使用-XX:+HeapDumpOnOutOfMemoryError
VM参数时使用的内存量。通常,我使用-Xmx<size>
VM参数控制堆大小。但是当我这样做时,永远不会发生内存不足错误。有没有人知道指定这样一个参数的方法,以便当堆大小(甚至堆栈大小)达到该参数时,抛出内存不足错误并且我可以获得堆转储?
感谢。
答案 0 :(得分:0)
-Xmx
是与-Xss
一起执行此操作的正确方法,因为堆栈大小会导致StackOverflowException
。如果你没有得到预期的OutOfMemoryError
,你可能需要为-Xmx
尝试更低的值,因为在它抛出错误之前JVM往往会超出这个限制,它似乎忽略了15米以下的任何东西。 -Xmx
。
答案 1 :(得分:0)
要比x4u提供的内容更准确地回答您的问题,将有助于了解以下内容:
问题#1:当您明确设置-Xmx
时,您要将其设置为什么?两个堆大小之间有什么区别(有和没有-Xmx
)。我假设你明确设置它时会增加堆大小。
问题#2 :您的程序是终止还是永久运行?如果它终止并且您没有看到OOM,那么可能是您没有泄漏,您只是没有为Java进程提供足够的内存。