学习自
http://hukai.me/android-training-managing_your_app_memory/
个人总结出的比较精华的东西(希望看官能够一一去实践):
1.内存抖动。monitor中可以看到这个现象。他还可以手动GC、查看内存中具体包含了哪些对象。
2.创建太多对象
3.对于大量的同类型的对象,可以考虑采用对象池技术,当然对象池得自己手写
4.内存泄漏。一个特别好的工具LeakCanary
5.慎用Service。在对的时候使用他。
6.UI隐藏后,释放资源。
7.全碎片一活动的开发技术值得一试,所有的UI载体都在同一平面上了,这样内存管理起来可以说是相当方便。
8.内存紧张时释放部分内存,系统有对应的回调的,代表不同的内存紧缺状态
9.如果你是比如图片软件,内存需求肯定特别大,可以考虑在application中指定为large heap。
10.多进程技术
11.精确掌控项目中运行的不同时期的所有对象。可以通过工具,也可以凭借自己对代码的掌控。这一点可以说是很重要。
12.bitmap是开发过程中的一个内存大户。索性fresco、glide等都已经处理好了。不过还是得深刻掌握。他的优化方向有,缓存,大小缩放,色彩位(图片质量)下降等。自己也要积极做好bitmap的释放工作,这部分的内存必须精确掌控。
13.数据也是一个大户。序列化的时候,可以考虑用protobuf代替。
14.容器也是一个大户。所以需要深刻掌握Java集合框架(比如需要知道hashmap一个entry需要额外的32byte)。也要学会Android新容器(SparseArray,避免了转型+稀疏矩阵)
15.代码量也是一个内存大户。你可以做的有:lib的取舍,注解的使用取舍,混淆,压缩等。