Android中常見的記憶體洩漏
-
什麼是記憶體洩漏
當一個物件 本該被回收,不需要再被使用時,有另外一個正在使用的物件持有它的引用從而導致它不能被回收,這導致本該被回收的物件不能被回收而停留在堆記憶體中,從而產生了記憶體洩漏。記憶體洩漏是造成應用程式OOM的主要原因之一,Android系統為每個應用程式分配的記憶體有限,當一個應用中產生的記憶體洩漏比較多時,這就難免會導致應用所需要的記憶體超過這個系統分配的記憶體限額,這就造成了記憶體溢位而導致應用Crash。
Android中常見的記憶體洩漏
-
單例造成的記憶體洩漏
由於單例的靜態特性使得單例的生命週期和應用的生命週期一樣長,這就說明了如果一個物件已經不需要使用了,而單例物件還持有該物件的引用,那麼這個物件將不能被正常回收,這就導致了記憶體洩漏。
-
Handler造成的記憶體洩漏
Handler的使用造成的記憶體洩漏問題應該說最為常見了,平時在處理網路任務或者封裝一些請求回撥等api都應該會藉助Handler來處理,對於Handler的使用程式碼編寫一不規範即有可能造成記憶體洩漏
-
靜態集合類引起記憶體洩露
主要是hashmap,Vector等,如果是靜態集合 這些集合沒有及時setnull的話,就會一直持有這些物件。remove 方法無法刪除set集 Objects.hash(firstName, lastName);經過測試,hashcode修改後,就沒有辦法remove了。
observer 我們在使用監聽器的時候,往往是addxxxlistener,但是當我們不需要的時候,忘記removexxxlistener,就容易記憶體leak。
-
廣播沒有unregisterrecevier
各種資料連結沒有關閉,資料庫contentprovider,io,sokect等。cursor
-
內部類
java中的內部類(匿名內部類),會持有宿主類的強引用this。所以如果是new Thread這種,後臺執行緒的操作,當執行緒沒有執行結束時,activity不會被回收。Context的引用,當TextView 等等都會持有上下文的引用。如果有static drawable,就會導致該記憶體無法釋放。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2688312/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Js中常見的記憶體洩漏場景JS記憶體
- Android常見記憶體洩漏總結Android記憶體
- Android 記憶體洩漏Android記憶體
- Android記憶體洩漏Android記憶體
- Android中的記憶體洩漏Android記憶體
- Android 記憶體洩漏分析Android記憶體
- Android效能優化之常見的記憶體洩漏Android優化記憶體
- Android開發中常見的5大記憶體洩漏問題及解決辦法Android記憶體
- Android中的記憶體洩漏模式Android記憶體模式
- 記憶體洩漏記憶體
- Android記憶體洩漏場景Android記憶體
- Android 記憶體洩漏總結Android記憶體
- javascript的記憶體管理以及3種常見的記憶體洩漏JavaScript記憶體
- 分析記憶體洩漏和goroutine洩漏記憶體Go
- Android 記憶體洩漏的八種可能Android記憶體
- Android記憶體洩漏的8種可能Android記憶體
- 三、Android效能優化之常見的記憶體洩漏分析Android優化記憶體
- 記憶體洩漏的原因記憶體
- Android備忘錄《記憶體洩漏》Android記憶體
- 初步探究Android記憶體洩漏(1)Android記憶體
- Android 5.1 WebView記憶體洩漏分析AndroidWebView記憶體
- Android 記憶體洩漏案例和解析Android記憶體
- Android記憶體優化(三)避免可控的記憶體洩漏Android記憶體優化
- js記憶體洩漏JS記憶體
- Java記憶體洩漏Java記憶體
- webView 記憶體洩漏WebView記憶體
- Javascript記憶體洩漏JavaScript記憶體
- 防止 Android 記憶體洩漏的 8 種方法Android記憶體
- WebView引起的記憶體洩漏WebView記憶體
- ARC下的記憶體洩漏記憶體
- 【轉】Java的記憶體洩漏Java記憶體
- Android 輕鬆解決記憶體洩漏Android記憶體
- Android Handler機制之記憶體洩漏Android記憶體
- 全面總結Android記憶體洩漏(下)Android記憶體
- Android效能優化之記憶體洩漏Android優化記憶體
- Android WebView Memory Leak WebView記憶體洩漏AndroidWebView記憶體
- Android檢測記憶體洩漏之leakcanaryAndroid記憶體
- 記憶體分析與記憶體洩漏定位記憶體