0

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

heapdump.20141111.011601.8944.0003.phd heapdump.20141111.011601.8944.0005.phd heapdump.20141111.011601.8944.0007.phd heapdump.20141111.0119601.8944phd heapdump.0

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

那为什么是4?为什么在同一秒内有 4 个?[我假设是因为 4 实际上 OOM 发生在同一秒内]

回顾这些转储,我发现它们非常相似。转储 2,3 和 4 不添加任何信息,而只会杂乱无章地填满驱动器。

如何将 IBM jvm 配置为仅转储一个堆转储?我可以在堆转储之间配置“等待时间”吗?

谢谢

4

1 回答 1

1

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

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

于 2015-01-29T15:07:45.640 回答