Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XX:+;HeapDumpOnOutOfMemoryError最大文件大小限制_Java_Jvm_Jvm Arguments - Fatal编程技术网

Java XX:+;HeapDumpOnOutOfMemoryError最大文件大小限制

Java XX:+;HeapDumpOnOutOfMemoryError最大文件大小限制,java,jvm,jvm-arguments,Java,Jvm,Jvm Arguments,我正在运行一个带有XX:+HeapDumpOnOutOfMemoryErrorJVM标志的Java进程,并看到以下输出: java.lang.OutOfMemoryError: Java heap space Dumping heap to /local/disk2/heaps/heapdump.hprof ... Dump file is incomplete: file size limit 有没有办法解决这个问题?-XX:+HeapDumpOnOutOfMemoryError命令行选项告

我正在运行一个带有
XX:+HeapDumpOnOutOfMemoryError
JVM标志的Java进程,并看到以下输出:

java.lang.OutOfMemoryError: Java heap space
Dumping heap to /local/disk2/heaps/heapdump.hprof ...
Dump file is incomplete: file size limit

有没有办法解决这个问题?

-XX:+HeapDumpOnOutOfMemoryError命令行选项告诉HotSpot VM在无法满足Java堆或永久生成的分配时生成堆转储。使用此选项运行时没有开销,因此它对于OutOfMemoryError需要很长时间才能出现的生产系统非常有用

为了解决您面临的特定问题,您可以使用以下纠正措施之一:

措施1: XX:HeapDumpSegmentSize

-XX:HeapDumpSegmentSize选项在生成分段HPROF堆转储时指定适当的段大小

格式

-XX:HeapDumpSegmentSize=size[k | k][m | m][g | g]

范例

java-XX:+heapdumponautofmemory-XX:HeapDumpSegmentSize=512MMyApp

默认值
1GB

措施2 -XX:分段heapdumpthreshold

当堆使用量大于指定大小时,-XX:SegmentedHeapDumpThreshold选项会生成分段堆转储(.hprof文件,1.0.2格式)

正确生成包含超过4 GB数据的堆转储需要分段HPROF转储格式。如果-XX:SegmentedHeapDumpThreshold选项的值设置超过4 GB,则可能无法正确生成堆转储

格式
-XX:SegmentedHeapDumpThreshold=大小

范例

java-XX:SegmentedHeapDumpThreshold=512MMyApp

默认值

2 GB

准确显示故障消息的一个简单原因可能是:
转储目录中没有足够的空间。


如果未通过JVM参数-XX:HeapDumpPath(请参阅)更改转储目录,则转储目录是当前工作目录。

我遇到了相同的问题,但如何使用这些选项?我是否应该将
XX:HeapDumpSegmentSize
设置为更大的值?(我的问题一个月发生一次,因此任何建议都将不胜感激……)为什么您认为“使用此选项不会产生任何开销”?甚至当堆转储被占用时?