天天看點

【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 都成立(這個數值是無法調整的)。<