JVM記憶體洩露(OOM)!帶你一一揭秘【第二彈】

testingbang發表於2020-03-25

我們將分成多次介紹記憶體洩露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)最根本的你還是要找出來哪些物件佔據堆的大部分,這些物件在原始碼中的什麼地方


好了,今天就到這裡,第三彈明天見面~


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942496/viewspace-2682587/,如需轉載,請註明出處,否則將追究法律責任。

相關文章