内存优化
内存优化
关于内存优化
内存问题很隐蔽,内存问题出现时一个累计的结果。
内存问题:
- 内存抖动:工具显示锯齿状、GC导致卡顿
- 内存泄露:可用内存减少、频繁GC
- 内存溢出:OOM、程序异常
工具选择:
-
Memory Profiler
实时图表展示应用内存使用量;
识别内存泄露、抖动等;
提供捕获堆转储、强制GC以及跟踪内存分配的能力。
-
Memory Analyzer
强大的Java Heap分析工具,查找内存泄露以及内存占用。
生成整体报告、分析问题等。
-
LeakCanary
自动内存泄露检测的一个库。
Android内存管理机制
-
Java内存管理机制
-
Android的内存管理机制
-
内存弹性分配,分配值与最大值受具体设备影响。
-
OOM场景:内存真正不足、可用内存不足。
-
Dalvik与Art区别
Dalvik仅仅固定一种回收算法;
Art回收算法可以运行期选择,具备内存整理能力,减少内存空洞。
-
Low Memory Killer
进程分类
回收收益
-
内存抖动解决
内存抖动就是内存频繁分配和回收导致内存不稳定。表现为频繁GC、内存曲线呈现锯齿状。会导致卡顿、OOM。
内存泄露解决
内存泄露也会表现出内存抖动、可用内存逐渐变少,引起内存不足、GC频繁、OOM。
可以使用Memory Profiler初步观察,通过Memory Analyzer结合代码确认。
理解MAT
ARTHook检测不合理图片
- Bitmap内存模型
- 获取Bitmap占用内存
- ARTHook:挂钩,将额外的代码勾住原有方法,修改执行逻辑。
- Epic:是一个虚拟层面,以Java Method为粒度运行时Hook框架。
线上内存监控
内存优化技巧
菜甜二的学习笔记and总结啊。。。总会遇到挫折,可是还是要保持开阔的心态才能开心的学习啊,坚持吧。