我们将分成多次介绍内存泄露OOM的内容,大致套路为现象、原因、解决方案。简单清晰,不玩高大上。记得给转发一下,哈哈

OOM最典型的表现:java.lang.OutOfMemoryError,你记住了吗?


回顾:JVM内存泄露(OOM)!带你一一揭秘【第一弹】

1 OOM的现象之二

今天介绍第二种GC overhead limit exceeded

2 什么原因造成的?

1)应用程序已经耗尽了几乎所有的可用内存并且GC一直未能回收它

2)官方解释:JVM花费了98%的时间进行垃圾回收,而只得到2%可用的内存,频繁的进行内存回收(最起码已经进行了5次连续的垃圾回收),JVM就会曝出ava.lang.OutOfMemoryError: GC overhead limit exceeded错误。

3 怎么解决和避免呢?

1)增加heap堆内存

2)考虑使用G1GC垃圾回收算法

3)千万不要使用-XX:-UseGCOverheadLimit

4)最根本的你还是要找出来哪些对象占据堆的大部分,这些对象在源代码中的什么地方

好了,今天就到这里,第三弹明天见面~

我们将分成多次介绍内存泄露OOM的内容,大致套路为现象、原因、解决方案。简单清晰,不玩高大上。记得给转发一下,哈哈

OOM最典型的表现:java.lang.OutOfMemoryError,你记住了吗?


回顾:JVM内存泄露(OOM)!带你一一揭秘【第一弹】

1 OOM的现象之二

今天介绍第二种GC overhead limit exceeded

2 什么原因造成的?

1)应用程序已经耗尽了几乎所有的可用内存并且GC一直未能回收它

2)官方解释:JVM花费了98%的时间进行垃圾回收,而只得到2%可用的内存,频繁的进行内存回收(最起码已经进行了5次连续的垃圾回收),JVM就会曝出ava.lang.OutOfMemoryError: GC overhead limit exceeded错误。

3 怎么解决和避免呢?

1)增加heap堆内存

2)考虑使用G1GC垃圾回收算法

3)千万不要使用-XX:-UseGCOverheadLimit

4)最根本的你还是要找出来哪些对象占据堆的大部分,这些对象在源代码中的什么地方

好了,今天就到这里,第三弹明天见面~

  • 版权声明:文章来源于网络采集,版权归原创者所有,均已注明来源,如未注明可能来源未知,如有侵权请联系管理员删除。

发表回复

后才能评论