java.lang.OutOfMemoryError:GC overhead limit exceeded

 

Java运行时环境(JRE)包含一个内置的垃圾回收进程,而在许多其他的编程语言中,开发者需要手动分配和释放内存。

Java应用程序只需要开发者分配内存,每当在内存中特定的空间不再使用时,一个单独的垃圾收集进程会清空这些内存空间。

默认情况下,当应用程序花费超过98%的时间用来做GC并且回收了不到2%的堆内存时,会抛出java.lang.OutOfMemoryError:GC overhead limit exceeded错误。具体的表现就是你的应用几乎耗尽所有可用内存,并且GC多次均未能清理干净。

如果没有这个异常,GC进程将被重启,100%的CPU将用于GC,而没有CPU资源用于其他正常的工作。

所以java.lang.OutOfMemoryError:GC overhead limit exceeded也可以看做是一个fail-fast(快速失败)实战的实例

posted @ 2019-10-28 15:27  kaizhengMan  阅读(192)  评论(0编辑  收藏  举报