1. 目的
从系统层面考虑,一些可能的内存优化方向,提高系统内存利用率,提高系统稳定性
2. 内存优化方向
2.1 reserved_memory
做TV相关的产品,对multimedia的使用场景比较多,系统中无可避免的需要reserved比较大的内存,这会降低系统内存的使用率,主要有以下几个方向,
reserved memory一般有两种,一种是系统可以复用的CMA内存,一种是模块专用的reserved,无论哪种类型的内存,原则上都应该越少越好。
对于reserved_memory,能使用CMA的尽量reserved成CMA内存,除非有无可争议的理由,否则不要直接reserved成系统专用的
对于一些reserved成系统专用的一些内存,如果使用场景不冲突,可以考虑一些复用,减少reserved的数量,尽可能多的将内存释放给系统
对于只是在开机阶段使用的,如logo,在使用完毕后需要及时释放
2.2 设置合适的zram
增大zram内存可以提高系统的稳定性,一般最大也不要超过free memory的50%。
2.3 Android go
在低内存设备上打开了Android go,除了Android go本身做的一些优化,vendor 模块也可以通过获取ro.config.low_ram属性,做一些app的优化
3.内存优化检测
在压力测试时,通过抓取内存使用数据,分析内存泄漏问题和内存优化方向
3.1 内存泄漏检测
抓取进程pss内存,判断是否发生内存泄漏,发生内存泄漏后通过peretto抓取trace数据
抓取smaps内存信息,检测kernel map内存泄漏
抓取一些必要节点信息,如ion,meminfo,pagetypeinfo
3.2 内存优化检测与分析
使用perfetto专门分析一些场景下的性能优化问题
预设置进程的理论最大使用值,如果超过了可以报警并记录发生问题时的场景
各模块尽可能的优化内存使用
评论 (0)