一.概念
- 內(nèi)存溢出 OOM:指你的應(yīng)用的內(nèi)存已經(jīng)不能滿足正常使用了深浮,堆棧已經(jīng)達到系統(tǒng)設(shè)置的最大值,進而導(dǎo)致崩潰,這是一種結(jié)果描述。
- 內(nèi)存泄漏(Memory Leak):指你的應(yīng)用使用資源之后沒有及時釋放迹冤,導(dǎo)致應(yīng)用內(nèi)存中持有了不需要的資源,這是一種狀態(tài)描述虎忌。你向系統(tǒng)申請分配內(nèi)存進行使用(new)泡徙,可是使用完了以后卻不歸還(delete),結(jié)果你申請到的那塊內(nèi)存你自己也不能再訪問(也許你把它的地址給弄丟了)膜蠢,而系統(tǒng)也不能再次將它分配給需要的程序堪藐。
通常都是由于內(nèi)存泄露導(dǎo)致堆棧內(nèi)存不斷增大莉兰,從而引發(fā)內(nèi)存溢出。 從用戶使用程序的角度來看礁竞,內(nèi)存泄漏本身不會產(chǎn)生什么危害糖荒,作為一般的用戶,根本感覺不到內(nèi)存泄漏的存在模捂。真正有危害的是內(nèi)存泄漏的堆積捶朵,這會最終消耗盡系統(tǒng)所有的內(nèi)存。
解決以上的其中的方法有:Java中的引用概念的理解與實踐
二.android檢測所有的內(nèi)存泄漏的庫-LeakCanary
學(xué)習(xí)這個庫可以參考這篇文章LeakCanary:檢測所有的內(nèi)存泄漏
三.來列舉android那些易OOM的操作
1.Bitmap:這是大家最先想到的一點,Bitmap造成OOM的討論與解決方案
2.handler:Android中Handler引起的內(nèi)存泄露
3.這幾天發(fā)現(xiàn)了以下幾片博文枫绅,寫的很不錯泉孩,推薦給大家,希望能夠幫助到大家解決問題[譯]Android內(nèi)存泄漏的八種可能
Android應(yīng)用內(nèi)存泄露分析并淋、改善經(jīng)驗總結(jié)