天天看点

【jvm】java jvm 报错 OutOfMemoryError: GC overhead limit exceeded1.概述

【jvm】java jvm 报错 OutOfMemoryError: GC overhead limit exceeded1.概述

1.概述

JVM 抛出 OutOfMemoryError 的最后一种情况是 JVM 认为在执行 GC 上花费了太多时间:

Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded

           

当满足下列所有条件时就会抛出该错误。

  1. 花在 Full GC 上的时间超出了

    -XX:GCTimeLimit=N

    标志指定的值。其默认值是

    98

    (也就是,如果 98% 的时间花在了 GC 上,则该条件满足)。
  2. 一次 Full GC 回收的内存量少于

    -XX:GCHeapFreeLimit=N

    标志指定的值。其默认值是 2,这意味着如果 Full GC 期间释放的内存不足堆的 2%,则该条件满足。
  3. 上面两个条件连续 5 次 Full GC 都成立(这个数值是无法调整的)。<