调整GC开销超出参数

时间:2015-09-04 09:54:25

标签: java garbage-collection jvm jvm-hotspot memory-leak-detector

我需要Oracle Hotspot比使用java.lang.OutOfMemoryError: GC overhead limit exceeded的默认参数更快地抛出异常UseGCOverheadLimit

默认情况下,在GC中花费98%以上的时间并且恢复的堆少于2%时会发生OOME(描述为http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#par_gc.oom)。

例如,当GC中花费超过20%的时间时,我需要我的JVM来抛出OOME。 不幸的是,-XX:GCTimeRatio=nn似乎没有什么区别。

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

1 个答案:

答案 0 :(得分:2)

  

默认情况下,当在GC中花费超过98%的时间并且回收的堆少于2%时,会发生OOME

这两个值是通过GCHeapFreeLimitGCTimeLimit

配置的

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