目录

2022-05-31-java.lang.OutOfMemoryErrorGC-overhead-limit-exceeded异常解决方法

【java.lang.OutOfMemoryError:GC overhead limit exceeded异常解决方法】

问题描述

由于同时启动了多个项目,导致电脑蓝屏重启,重启后idea启动项目,提示系统资源不足,和Information:java: java.lang.OutOfMemoryError: GC overhead limit exceeded错误,

https://i-blog.csdnimg.cn/blog_migrate/b651bd5a0fd792790970c1ec79661f4a.png

重新编译后启动,仍旧是相同错误

https://i-blog.csdnimg.cn/blog_migrate/1501daa9dc24037b4665f912d1e93a7d.png

https://i-blog.csdnimg.cn/blog_migrate/66c0751f6241c17f0dc0dc9abe2b3b4f.png



原因分析:

简单来说,java.lang.OutOfMemoryError: GC overhead limit exceeded发生的原因是,当前已经没有可用内存,经过多次GC之后仍然没能有效释放内存。

这个错误其实就是空闲内存与GC之间平衡的一个限制,当经过几次GC之后,只有少于2%的内存被释放,也就是很少的空闲内存,可能会再次被快速填充,这样就会触发再一次的GC。这就是一个恶性循环了,CPU大部分的时间在做GC操作,没有时间做具体的业务操作,可能几毫秒的任务需要几分钟都无法完成,整个应用程序就形同虚设了。经过监控发现,启动项目是CPU占有率达到100%。

解决方案:

出现这个错误,一般是因为JVM物理内存过小。默认的Java虚拟机最大内存仅为64兆,这在开发调试过程中可能没有问题,但在实际的应用环境中是远远不能满足需要的,除非你的应用非常小,也没什么访问量。否则你可能会发现程序运行一段时间后包java.lang.OutOfMemoryError的错误。因此我们需要提升resin可用的虚拟机内存的大小

设置idea运行内存

https://i-blog.csdnimg.cn/blog_migrate/60e83b6a496a21f98dfb862a55db70cb.png

https://i-blog.csdnimg.cn/blog_migrate/1eb08d6ea8277ed92665cc5d0da97628.png

将最大运行内存设置为4096m后,重启项目,还是相同的错误

设置构建项目内存

https://i-blog.csdnimg.cn/blog_migrate/a4214937a3d4e539e7f3b345986b0d0a.png

设置后重启项目,启动成功!

所以错误原因是构建项目内存不足导致,希望遇到相同问题小伙伴可以参考一下!

68747470733a2f2f62:6c6f672e6373646e2e6e65742f71715f34313833313434382f:61727469636c652f64657461696c732f313235303538393238