Android 内存优化总结&实践

内存泄露

大部分的内存问题都是内存泄露导致的,Android里也有一些很常见的内存泄露问题这里简单罗列下:

详细见https://www.jianshu.com/p/c270148e993b

单例(主要原因还是因为一般情况下单例都是全局的,有时候会引用一些实际生命周期比较短的变量,导致其无法释放)

静态变量(同样也是因为生命周期比较长)

Handler内存泄露[7]

匿名内部类(匿名内部类会引用外部类,导致无法释放,比如各种回调)

资源使用完未关闭BraodcastReceiver,ContentObserver,File,Cursor,Stream,Bitmap

对Android内存泄露业界已经有很多优秀的组件其中LeakCanary最为知名(Square出品),其原理是监控每个activity,在activity ondestory后,在后台线程检测引用,然后过一段时间进行gc,gc后如果引用还在,那么dump出内存堆栈,并解析进行可视化显示。使用LeakCanary可以快速地检测出Android中的内存泄露。

正常情况下,解决大部分内存泄露问题后,App稳定性应该会有很大提升,但是有时候App本身就是有一些比较耗内存的功能,比如直播,视频播放,音乐播放,那么我们还有什么能做的可以降低内存使用,减少OOM呢?

1. 首先是解决大部分内存泄露。LeakCanary工具

LeakCanary使用详解见:

https://blog.csdn.net/itachi85/article/details/77826112?utm_source=gold_browser_extension


图片发自简书App



2. 通过MAT查看内存占用,优化占用内存较大的地方。

详细见:http://liuwangshu.cn/application/performance/ram-5-mat.html

图片发自简书App
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容