android都图片mat_Android内存泄露整理
為什么會產生內存泄漏?
當一個對象已經不需要再使用了,本該被回收時,而有另外一個正在使用的對象持有它的引用從而導致它不能被回收,這導致本該被回收的對象不能被回收而停留在堆內存中,這就產生了內存泄漏。
內存泄漏對程序的影響?
內存泄漏是造成應用程序OOM的主要原因之一!我們知道Android系統為每個應用程序分配的內存有限,而當一個應用中產生的內存泄漏比較多時,這就難免會導致應用所需要的內存超過這個系統分配的內存限額,這就造成了內存溢出而導致應用Crash。
一、 Activity 泄漏
1、Activity 泄漏通常是內存泄漏的一種。為什么會泄漏呢?如果你持有一個未使用的 Activity 的引用,其實也就持有了 Activity 的布局,自然也就包含了所有的 View。最棘手的是持有靜態引用。別忘了,Activity 和 Fragment 都有自己的生命周期。一旦我們持有了靜態引用,Activity 和 Fragment 就不會被垃圾回收器清理掉了。這就是為什么靜態引用很危險。
2、如何避免 Activity 泄漏?
- 移除掉所有的靜態引用。
- 考慮用 EventBus 來解耦 Listener。
- 記著在不需要的時候,解除 Listener 的綁定。
- 盡量用靜態內部類。
- 做 Code Review。個人經驗:Code Review 能很早的發現內存泄漏。
- 了解你程序的結構。
- 用類似 MAT,Eclipse Analyzer,LeakCanary 這樣的工具分析內存。
- 在 Callback 里打印 Log。
二、滑動
實現流暢滑動的技巧:UI 線程只用作 UI 渲染。這一條真諦能夠解決 99% 的滑動卡頓問題。不要在 UI 線程做下面的事情:
- 載入圖片
- 網絡請求
- 解析 JSON
- 讀取數據庫
做這些操作是很慢的,像圖片,網絡,JSON考慮用現成的庫,有很多社區提供的解決方案,數據庫考慮下用 Loader,支持批量更新和載入
參考文檔 Android memory profiler的使用
(Android Studio 3.0)Android Profiler內存泄漏檢查?blog.csdn.net總結
以上是生活随笔為你收集整理的android都图片mat_Android内存泄露整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 萝卜汤怎么做好吃啊?
- 下一篇: ssm开发框架原理_SSM 单体框架 -