最近專案在做壓力測試得時候,發現效能快速劣化,tps很低,到最後系統掛死。
通過檢視cpu情況,發現cpu占用非常高,找到暫用cpu的執行緒是gc執行緒
同時檢視系統記憶體gc情況,發現頻繁gc,並且記憶體不能夠**,
明顯是有了記憶體洩漏的現象,再dump記憶體工具,發現com.alibaba.fastjson.util.identityhashmap產生了大量
通過分析**
主要原因是identityhashmap 使用 system.identityhashcode作為key,而沒有使用 resolvabletype的hash值
主要的出現場景就是json解析的時候,採用了泛型類,泛型類又沒有直接指定具體的型別
單例模式引起記憶體洩漏
在csdn上看到了關於懶漢式單例模式直接傳遞context context 物件引起記憶體洩漏的問題。引起記憶體洩漏是因為例項化單例物件的activity例項因為被單例物件一直持有無法gc導致的記憶體洩漏,總的來說,就是長生命週期物件持有短生命週期物件導致短生命週期物件無法被 餓漢式單例模式 如果不...
安卓 Handler引起的記憶體洩漏
myhandler activity activity override public void handlemessage message msg 將 改為以上形式之後,就算完成了。還有一種就是當activity銷毀的時候,也就是在ondestroy 方法裡加上 mhandler.removeca...
Android 解決MVP引起的記憶體洩漏
首先不了解mvp模式的孩紙先去看一下mvp再閱讀本部落格嘍。使用mvp模式的主要作用,是它解決了業務邏輯和資料訪問的緊耦合,使presenter作為view和model的中間人,降低了資料和view的耦合度。所以mvp有很多有點 利於維護 易於測試 松耦合 復用性高,易於擴充套件。但由於presen...