1.軟伤为,弱咒循,虛引用區(qū)別:
GC 掃描后不一定回收,除非內(nèi)存不夠绞愚;GC掃描到就回收了叙甸;及時(shí)回收;
2.垃圾回收原理:
對(duì)象創(chuàng)建后放在年輕代的Eden區(qū)位衩,GC 掃描后計(jì)數(shù)+1裆蒸,放在年輕代的存活1區(qū),GC再次掃描到后移動(dòng)到年輕代的存活2區(qū)糖驴,15次之后還可達(dá)僚祷,從年輕代移到老年代,時(shí)間沉淀后贮缕,還可達(dá)辙谜,從老年代移到永久代。
3.垃圾回收算法:
標(biāo)記清除算法:容易內(nèi)存碎片感昼,掃描兩次筷弦,第一次掃描標(biāo)記,第二次掃描回收不可達(dá)對(duì)象
復(fù)制算法:內(nèi)存使用一半抑诸,用完后用另一半,之前一半清除和回收爹殊。利用率低蜕乡,高效(因?yàn)橹粧呙枰淮危?br>
標(biāo)記整理算法:第一次掃描出使用中,可回收梗夸,未使用的內(nèi)存层玲,第二次掃描整理。因此效率低
分代算法:綜合運(yùn)用復(fù)制算法和標(biāo)記整理算法(比如老年代以上反症,不需要經(jīng)承量椋回收,效率地點(diǎn)也沒(méi)關(guān)系铅碍,但是利用率高叭竺唷)
4.Android獲取內(nèi)存:
image.png
image.png
5.MAT使用:
1.柱狀圖包名排序后:incoming和outcoming理解:
image.png
2.淺堆和深堆:
image.png
3.新增引用內(nèi)存的影響:
image.png
6.Bitmap 內(nèi)存優(yōu)化(Android official site)
epic(from github)
image.png
7.LeakCanary原理(輸出和haha可達(dá)性診斷):
1.在contentProvider中進(jìn)行的初始化
2.原理理解:
image.png
image.png
image.png
3.看輸出時(shí),從下往上看胞谈,最下面的時(shí)泄漏的類(lèi)尘盼,往上看是一層層的持有關(guān)系憨愉。
拓展:
Activity.componentCallback2
image.png