Android 内存优化

Android内存相关知识

1.Android Framework

管理进程,管理进程优先级与进程所占内存

2.Linux内核

AMS会对进程评分, 然后发送给Linux内核,由Linux 决定杀死与否

3.DVM

和JVM 一样,也分young、old、permanent。

此外采用paging(最小单位)、 mapping(看似整块,实则映射,所以大内存还是受限)管理内存

 

Android实现共享内存的策略

1.static的东西代码、资源、so被mapped到一个进程中,所有进程在需要的时候可以paged in,不需要的时候paged out。

2.ashmen、gralloc实现动态ram

 

 

工具

MAT

先要dump一下,然后转换一下hprof文件,就可以在MAT里使用了,比较 重要的功能有

1.可以看见内存快照下,有啥对象,甚至可以看见这些对象内部包含了什么对象!

2.还有可以看见 各个对象的数量以及所占内存

3.可以写oql语句

LeakCanary

查看内存泄漏神器

Profiler

查看内存抖动神器

 

图片是内存大户

1.缓存压缩后的图片

2.时刻明确当前内存有哪些图片,可以适当多转化一些到文件缓存里去,同时定期执行图片的释放

3.图片大小压缩,在这之前仅获取其尺寸到内存中而非整张图

4.图片色彩位数调低,甚至可以用 libjpeg-turbo转成YCbCr

5.inBitmap使得图片内存区域复用,界面上有多少图, 大概就内存里就会有多少图,不管总共有多少图在 整个列表里

6.5.0以下可以采用native区存储图片

 

内存泄漏是内存大户,最关键的是进入一个页面然后退出一个页面,内存并不会增加,这很重要。

比较常见的内存泄露

1.handler

2.线程

3.context泄露

4.onDestory的注销

5.cursor close

6.typed array的recycle

7.bitmap及时recycle

8.webview

 

静态内存分析

重度使用app的每个页面,然后回到首页, 用MAT对比下过去和现在的内存快照,看看多了什么。

不仅是静态内存,临时内存,但是生命周期略微久了一点,也要注意。

 

小细节:

1.SharedPreference会加载整个xml到内存中且不会释放,所以这个只能用来存配置信息

2.数据结构的使用,比如HashMap能否用ArrayMap和SparseArray代替?

3.内存抖动也要规避,比如String拼接,onDraw创建对象,内存抖动会引起频繁gc,内存碎片化的更容易引起gc

4.根据内存所剩情况的回调,做出一些反应

5.try catch分配大内存的操作,进行降级

6.数据可以采用protobuf

7.代码量也是会占用很多内存的

。。。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReAdme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 、本项目3比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReAdme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通;、本项 3目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReAdme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值