Android內(nèi)存泄露的幾個(gè)點(diǎn)

1.內(nèi)部類(lèi)造成的內(nèi)存泄露。

Activity對(duì)象是存在堆內(nèi)存中的,而內(nèi)部類(lèi)靜態(tài)實(shí)例是存放在方法區(qū)中,GC機(jī)制是回收

堆內(nèi)存,所以,如回收不了被內(nèi)部類(lèi)靜態(tài)實(shí)例持有的堆內(nèi)存。

內(nèi)部類(lèi)在編譯時(shí),會(huì)生成與外部類(lèi)的持有資源,這樣就內(nèi)部類(lèi)就持有外部類(lèi)。

可通過(guò)靜態(tài)內(nèi)部類(lèi)解決上面的問(wèn)題,靜態(tài)內(nèi)部類(lèi)不持有外部類(lèi)的資源,這也就是為什么靜態(tài)內(nèi)部類(lèi)不能調(diào)用外部類(lèi)的資源。

2.單例造成的內(nèi)存泄露

如果單例持有的context,是activity的context,而單例是靜態(tài)的,所以他的生命周期是跟application同樣的,所以持有activity

的context,或其他資源,會(huì)讓activity無(wú)法被回收。

3.Handler造成的內(nèi)存泄露

當(dāng)MainActivity結(jié)束時(shí),未處理的消息持有handler的引用,而handler又持有它所屬的外部類(lèi)也就是 MainActivity的引用。這條引用關(guān)系會(huì)一直保持直

到消息得到處理,這樣阻止了MainActivity被垃圾回收器回收,從而造成了內(nèi)存泄漏。

解決方法,可將handler修改成靜態(tài)內(nèi)部類(lèi),并加上弱引用

4.資源未關(guān)閉造成的內(nèi)存泄漏

對(duì)于使用了BraodcastReceiver,ContentObserver,F(xiàn)ile,Cursor,Stream,Bitmap等資源,應(yīng)該在Activity銷(xiāo)毀時(shí)及時(shí)關(guān)閉或者注銷(xiāo),否則這些資源將不會(huì)被回收,從而造成內(nèi)存泄漏。

5.線程造成的內(nèi)存泄漏

AsyncTask和Runnable都使用了匿名內(nèi)部類(lèi),那么它們將持有其所在Activity的隱式引用。如果任務(wù)在Activity銷(xiāo)毀之前還未完成,那么將導(dǎo)致Activity的內(nèi)存資源無(wú)法被回收,從而造成內(nèi)存泄漏。

可修改成靜態(tài)內(nèi)部類(lèi)。


6.一些框架資源的使用習(xí)慣,沒(méi)有及時(shí)回收,應(yīng)該在周期內(nèi)進(jìn)行釋放

7.集合類(lèi)泄漏,集合如果只有添加機(jī)制,沒(méi)有刪除的處理,極其容易造成內(nèi)存泄露

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 內(nèi)存泄漏總結(jié) 內(nèi)存管理的目的就是讓我們?cè)陂_(kāi)發(fā)中怎么有效的避免我們的應(yīng)用出現(xiàn)內(nèi)存泄漏的問(wèn)題。內(nèi)存泄漏...
    _痞子閱讀 1,703評(píng)論 0 8
  • 內(nèi)存管理的目的就是讓我們?cè)陂_(kāi)發(fā)中怎么有效的避免我們的應(yīng)用出現(xiàn)內(nèi)存泄漏的問(wèn)題。內(nèi)存泄漏大家都不陌生了,簡(jiǎn)單粗俗的講,...
    宇宙只有巴掌大閱讀 2,493評(píng)論 0 12
  • Android 內(nèi)存泄漏總結(jié) 內(nèi)存管理的目的就是讓我們?cè)陂_(kāi)發(fā)中怎么有效的避免我們的應(yīng)用出現(xiàn)內(nèi)存泄漏的問(wèn)題。內(nèi)存泄漏...
    apkcore閱讀 1,310評(píng)論 2 7
  • 內(nèi)存管理的目的就是讓我們?cè)陂_(kāi)發(fā)中怎么有效的避免我們的應(yīng)用出現(xiàn)內(nèi)存泄漏的問(wèn)題。內(nèi)存泄漏大家都不陌生了,簡(jiǎn)單粗俗的講,...
    DreamFish閱讀 875評(píng)論 0 5
  • 小扇輕盈透薰籠,流光兩處氳夢(mèng)中。 回首白頭階前座,青衣懨懨燭淚紅。 煙催寒香羌愁眠,樓斜疏影鳥(niǎo)倦容。 誰(shuí)憐梨花陌上...
    天與聘婷閱讀 696評(píng)論 2 16

友情鏈接更多精彩內(nèi)容