系统性能分析与优化

1.性能分析理论

 


 2.可操作性分析

 从资源角度分析,有CPU、GPU、内存

CPU:比较底层,一般情况先更多的是受限于内存。google也提供有CPU优化方式,深入系统之中,对于普通开发着来讲,相对透明,需要更专业的知识。可以不考虑,有芯片方案方优化即可。分析问题可用top命令查看系统cpu状态

GPU:有硬件加速。涉及不多,不做赘述,一般也和内存有很大关系

内存:如论是系统开发还是应用开发,都很难避开

其他更细节的分析不做赘述,需要时间深入

3.内存优化分析

内存的使用可分为以下集中情况:

1)常用内存,算是常驻,如service、守护进程等

2)应用运行波动内存

在假设其他部件满足使用需求的情况下,内存满足这两个条件,应用的使用基本不会因为内存导致卡顿

在Android中,使用lowmemkiller管理内存。内存管理分为不同的水线

当内存低于D线,则杀死和回收D部分的进程和内存;当内存低于C线,则杀死和回收C部分的进程和内存。以此类推,当内存低于最低线时,可能会使用内存压缩或虚拟内存

cache部分内存,即是Android中一直保持free的内存,用于系统申请分配内存,降低请求内存反应时间,因此这个内存算是决定应用的反应速度。

A、B、C...,不同水线代表了,在不同水线上可被保持存在的应用进程。比如D线,是最大保存进程信息的水线。

D线可以认为是CACHED_APP_LMK_FIRST_ADJ线,当内存小于D线,则杀掉缓存的不使用的内存。因此当D线设置太大,会频繁触发回收内存,内存空余较大,当切换应用时,应用都需要全新启动,启动可能比较慢;若D线设置太小,导致缓存很多进程,导致耗电量增大或过于小,应用启动内存不足,导致内存回收。

其他水线同理。

因此,当最小水线,设置过小,当需要很多内存时,内存回收速度不足消耗速度,导致系统变慢,出现很多并发运行,因此会出现系统崩溃。当水线设置过高,应用场景切换不够顺滑且出现卡顿现象。

cache可简单理解为预留,待分配的缓存内存,确保系统分配堆内存时充足。在一定程度上确保应用场景切换顺滑。当设置过小,内存波动远大于缓存,系统容易崩溃;当设置过大,大于最大内存波动部分,形成内存浪费。

综上所述,合理的内存配置,是多次测试数据统计结果。类似产品,可以用经验分配。

4.内存优化实践

水线设置,在android系统中提供了配置入口:frameworks\base\core\res\res\values\config.xml

 不水线计算算法,rameworks\base\services\core\java\com\android\server\am\ProcessList.java

预留内存配置

修改配置算法

总结:水线和预留内存,建议使用adj,可以根据不同设备设置不同的值。若显示屏固定,也可以使用固定值

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值