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記憶體洩漏(1)Android記憶體
- Android 輕鬆解決記憶體洩漏Android記憶體
- Android Handler機制之記憶體洩漏Android記憶體
- 分析記憶體洩漏和goroutine洩漏記憶體Go
- 記憶體洩漏的原因記憶體
- Android記憶體溢位、記憶體洩漏常見案例分析及最佳實踐總結Android記憶體溢位
- js記憶體洩漏JS記憶體
- jvm 記憶體洩漏JVM記憶體
- Java記憶體洩漏Java記憶體
- Android效能優化篇之記憶體優化--記憶體洩漏Android優化記憶體
- WebView引起的記憶體洩漏WebView記憶體
- valgrind 記憶體洩漏分析記憶體
- 記憶體的分配與釋放,記憶體洩漏記憶體
- Android中使用Handler為何造成記憶體洩漏?Android記憶體
- Android Native 記憶體洩漏系統化解決方案Android記憶體
- Android記憶體洩漏檢測與修復技巧Android記憶體
- 【譯】JavaScript的工作原理:記憶體管理和4種常見的記憶體洩漏JavaScript記憶體
- 【記憶體洩漏和記憶體溢位】JavaScript之深入淺出理解記憶體洩漏和記憶體溢位記憶體溢位JavaScript
- JVM——記憶體洩漏與記憶體溢位JVM記憶體溢位
- vue使用中的記憶體洩漏Vue記憶體
- [譯] Swift 中的記憶體洩漏Swift記憶體
- Swift的ARC和記憶體洩漏Swift記憶體
- .NET 記憶體洩漏的爭議記憶體
- iOS檢測記憶體洩漏iOS記憶體
- ThreadLocal記憶體洩漏問題thread記憶體
- PHP 記憶體洩漏分析定位PHP記憶體
- 記憶體洩漏除錯工具記憶體除錯
- ThreadLocal真會記憶體洩漏?thread記憶體
- Perfdog 玩轉記憶體洩漏記憶體
- JavaScript之記憶體洩漏【四】JavaScript記憶體
- .Net程式記憶體洩漏解析記憶體