我需要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尽可能地努力来释放堆。
答案 0 :(得分:2)
默认情况下,当在GC中花费超过98%的时间并且回收的堆少于2%时,会发生OOME
这两个值是通过GCHeapFreeLimit
和GCTimeLimit
GCTimeRatio
仅定义了GC启发式优化的软目标。