内存优化
介绍
(1)内存是大问题,但缺乏关注
(2)内存问题,往往比较隐蔽,bug表现和真正的原因往往不是一个,压死骆驼的最后一根稻草
内存问题
(1)内存抖动:通过工具发现内存是锯齿状,内存抖动会导致GC频繁,GC频繁会导致卡顿
(2)内存泄漏:会导致可用内存减少,在内存不够时,GC执行频繁
(3)内存溢出:OOM,程序异常
工具
(1)Memory Profiler (Android studio 集成工具)
a)实时图表展示应用内存使用量
b)识别内存泄漏,抖动等
c)提供捕获堆转储,强制GC以及跟踪内存分配的能力
(2)Memory Analyzer
a)强大的Java Heap分析工具,查找内存泄漏及内存占用
b)生成整体报告,分析问题等
c)线下深入使用
(3)LeakCanary
a)自动内存泄漏检测,是一个库
b)网站:https://github.com/square/leakcanary
c)线下集成。
细节
(1)LargeHeap属性
默认一个应用的内存是256M,当开启了LargeHeap后,内存就是 256 x 2 = 512 M。
(2)onTrimMemory
系统提供的低内存回调,当应用收到这个回调后,可以做一些处理,比如清除所有的图片缓存。
(3)使用系统给我们优化过的集合:SparseArray
(4)谨慎使用SharePreference
(5)谨慎使用第外部库,有些外部库往往没有经过大规模使用的验证
(6)业务架构要相对合理
Bitmap 优化
Android 的内存消耗,最消耗内存的就是Bitmap。
面试