android必備記錄筆記(一)記憶體洩露和各種效能優化
阿新 • • 發佈:2018-12-16
該篇筆記來自於平時學習時,對各種學習資源的整合,如有冒犯敬請諒解,整理的不好,還望海涵指出錯誤
一、記憶體洩露
針對記憶體洩露我認為要知道下面三點:
第一:要弄清楚記憶體洩露與記憶體溢位的區別
第二:要弄清楚常規的記憶體分析方法,重點掌握Leakcanary的使用和原理
第三:要清楚記憶體洩露出現的常規場景與解決辦法
##1.什麼是記憶體洩露,什麼是記憶體溢位,它兩之間的關係?
記憶體洩露是指程式在申請了記憶體後,無法釋放已申請的記憶體空間。(小)
記憶體溢位是指程式在申請記憶體時,沒有足夠的記憶體空間供其使用。 (大)
它兩之間的關係:
記憶體的溢位是記憶體分配達到了最大值,而記憶體洩漏是無用記憶體充斥了記憶體堆;因此記憶體洩漏是導致記憶體溢位的元凶之一,而且是很大的元凶;因為記憶體分配完後,哪怕佔用再大,也會回收,而洩漏的記憶體則不然;當清理掉無用記憶體後,記憶體溢位的閥值也會相應降低。
描述說明:
有一塊記憶體,記憶體裡面有很多個物件,在記憶體回收時,有些物件不能被回收,就成了垃圾物件,即沒得用了的物件,這個垃圾物件就是我們所說的記憶體洩漏,當垃圾物件一直在累加到記憶體的最大值時,就會造成記憶體溢位,記憶體溢位的元凶就是記憶體洩露。
##2.找出記憶體洩露的方法
&&1、用MAT工具進行分析
&&2、使用studio 自帶的Memory Monitor工具
&&3、使用StrictMode (嚴格模式)
&&4、整合Leackcanary工具
@@1. MAT 分析工具 (群英傳 244頁)