4

我需要我的 Oracle Hotspotjava.lang.OutOfMemoryError: GC overhead limit exceeded比使用UseGCOverheadLimit.

默认情况下,OOME 发生在超过 98% 的时间用于 GC 并且不到 2% 的堆被回收(描述http://www.oracle.com/technetwork/java/javase/gc-tuning-6 -140523.html#par_gc.oom )。

例如,当超过 20% 的时间用于 GC 时,我需要我的 JVM 抛出 OOME。不幸的是,这-XX:GCTimeRatio=nn似乎没有什么不同。

我需要以这种方式调整我的 JVM 的原因是我正在测试我的应用程序是否包含内存泄漏(准确地说,我有一个内存泄漏检测基础设施,我想每天测试我们的应用程序)并且我不不需要我的 JVM 尽可能努力地释放堆。

4

1 回答 1

2

默认情况下,当超过 98% 的时间花费在 GC 上并且不到 2% 的堆被回收时,就会发生 OOME

这两个值通过GCHeapFreeLimit和配置GCTimeLimit

GCTimeRatio仅定义 GC 启发式将优化的软目标。

于 2015-09-04T10:47:02.863 回答