Android内存优化方案有哪些?

1、为什么要做内存优化

智能手机发展已经有十几个年头,手机的软硬件都已经发生了翻天覆地的变化,特别是Android阵营,从一开始的一两百M到今天动辄4G,6G内存。然而大部分的开发者观看下自己的异常上报系统,还是会发现各种内存问题仍然层出不穷,各种OOM为crash率贡献不少。Android开发发展到今天也是已经比较成熟,各种新框架,新技术也是层出不穷,而内存优化一直都是Android开发过程一个不可避免的话题。

2、Android的内存管理机制

(1)、内存分配策略

针对进程:
ActivityManagerService 集中管理 所有进程的内存分配。

针对对象:
Android内存优化方案有哪些?

(2)、内存回收策略
Android内存优化方案有哪些?
ActivityManagerService会对所有进程进行评分(存放在变量adj中),然后再讲这个评分更新到内核,由内核去完成真正的内存回收( lowmemorykiller, Oom_killer)
Android内存优化方案有哪些?
系统需要进行内存回收时最先回收空进程,然后是后台进程,以此类推最后才会回收前台进程(一般情况下前台进程就是与用户交互的进程了,如果连前台进程都需要回收那么此时系统几乎不可用了)。

由此也衍生了很多进程保活的方法(提高优先级,互相唤醒,native保活等等),出现了国内各种全家桶,甚至各种杀不死的进程。

3、内存优化方案

Android内存优化方案有哪些?