fullGC過於頻繁的原因和解決方案

2021-08-21 05:00:42 字數 752 閱讀 2678

2023年04月10日 23:02:43

系統高峰期fullgc頻繁,優化後恢復正常。 

導致原因: 

系統中有乙個呼叫頻繁的介面會呼叫下面這個方法,目的是獲取的寬高資訊,但是image這個物件用完不會自動釋放,需要手動呼叫 flush()方法;以前沒有呼叫這個方法,就導致一有請求就會有大物件進入old區,在業務高峰期old區一會就被打滿,所以一直進行fgc。

public

static image getimage(string path)

解決辦法: 

其實不管是用image還是bufferedimage,讀取的寬高不用把全部載入到記憶體,在的寬高資訊其實是儲存在檔案頭中的,只 要按不同的格式讀取檔案的頭資訊就可以拿到寬高資訊 

使用imagereader**如下

iterator readers = imageio.getimagereadersbyformatname(stringutil.getfilesuffix(filepath)); 

imagereader reader = (imagereader)readers.next();

iis = imageio.createimageinputstream(is);

reader.setinput(iis, true);

return pair.of(reader.getwidth(0),reader.getheight(0));

參考博文:

頻繁發生fullgc的原因和定位思路

1.機器 cpu 負載過高 2.頻繁 full gc 告警 3.系統無法請求處理或者過慢,介面無關 全面性的出現以上異常的時候,要第一時間反應過來可能是 full gc的問題 full gc 觸發條件是 老年代空間不足,所以追因的方向就是導致 老年代空間不足的原因 大量物件頻繁進入老年代 老年代空間...

Script Error產生的原因和解法

script error對於前端開發者相信都不陌生,由於沒有具體錯誤堆疊和 行列號,成為可能是最神秘的錯誤之一。下面介紹script error產生的原理和解決辦法。跨域資源引用 假如 abc.com下的頁面引用了屬於 cdn 的demo.js檔案。若執行中demo.js的run 方法 內部報了乙個...

把脈你的離職原因,避免頻繁跳槽

跳槽是個人行為,原則上,它應該是屬於每個人的自由。但是,跳槽真的就是說走就走那麼簡單嗎?你這份工作真的不適合你,還是你還沒有適應如今的職場?根據前程無憂 2015年個人跳槽意願度報告 中顯示,對薪資不滿 職業發展遇到瓶頸 企業發展不佳 無法認同企業的管理或文化成為大家跳槽的主要原因。見下圖 那這些原...