IBM JDK每个OutOfMemory转储太多堆。我怎样才能减少这个#?

时间:2015-01-29 04:20:58

标签: jvm ibm-jvm

我们是IBM jvm的新手。在查看由OutOfMemoryError(i..e -XX:+ HeapDumpOnOutOfMemoryError)引起的堆转储时,我们经常会看到在同一时刻生成的多个转储(.phd文件)。例如:

heapdump.20141111.011601.8944.0003.phd heapdump.20141111.011601.8944.0005.phd heapdump.20141111.011601.8944.0007.phd heapdump.20141111.011601.8944.0009.phd

当我读到这些内容时,jvm在2014-11-11 01:16:01 am为pid#8944生成了这4个堆转储。

那为什么4?为什么4在同一秒? [我假设因为4实际上OOM&#39发生在同一秒]

审查这些转储,我发现它们完全相同。转储2,3和4不会添加任何信息,但只会混乱并填满驱动器。

如何配置IBM jvm只转储一个堆转储?我可以配置一个等待时间'堆转储之间?

感谢

1 个答案:

答案 0 :(得分:1)

不是100%确定多次转储的原因,可能是转储/恢复过程正在生成另一个OOM。

您可以使用IBM JDK -Xdump选项(控制使用转储代理和转储的方式)通过提供range来限制OutOfMemoryErrors上转储的数量。
例如,要将数量限制为单个转储,请使用范围0..1:-Xdump:heap:range=0..1
默认范围是1..4,您可以通过使用-Xdump:what

运行JVM来查看它