android內存溢出和內存泄漏

參考:https://www.jianshu.com/p/05a83c34a205

概念:

*內存溢出:系統會給每個App分配內存空間也就是heap size值,當app佔用的內存加上申請的內存超過了Dalvik

虛擬機的最大內存時就會拋出Out of Memory異常。

*內存泄漏:當一個對象不再使用時,被應該被垃圾回收器回收,但這個對象由於被其它正在使用的對象所持有,

造成無法被回收,造成內存泄漏,內存泄漏最終會導致內存溢出。

關係:內存泄漏是造成內存溢出的主要原因之一。

危害:

*內存溢出:會觸發java.lang.OutOfMemoryError,造成程序崩潰。

*內存泄漏:過多的內存泄漏會造成內存溢出或者UI卡頓現象。

內存泄漏的原因:

*大量的圖片,音頻,視頻的不合理處理。

*非靜態內部類和匿名內部類Handler,Thread,Runnable等由於持有外部類activity的引用,從而關閉activity時 ,

線程未完成造成內存泄漏。

*資源未及時關閉。(如BroadcastReceiver actiivity關閉時未註銷)

*對static關鍵字的濫用。

*如果使用context儘量使用Application的Context。

*不要使用String進行字符串拼接。

*一些第三方庫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章