1、内存共享 P104 - 105
Android 中的每个应用程序都有自己的进程。
每个新进程都是由 Zygote 进程派生而来( fork )的,目的是使得应用程序快速启动,因为 Zygote 进程一直存在于内存之中,fork 过来便可直接使用它的一些资源,减少加载时间。而且,并不是所有资源 fork 过来,一些公共的资源是跨进程共享的(利用的是 paging(分页) 与 memory-mapping(内存映射)技术),从而达到内存共享的目的,所以说 Zygote 进程在不同进程及应用程序之间是共享的。
2、运行时与即使编译 P105 - 107
3、Android N 对内存管理的限制 P109 - 110
4、最佳实践部分 P111 - 162
(1)尽量使用所占 bit 小的数据类型
(2)使用 Sparse 数组集避免包装数据类型的拆装箱
(3)使用 AddayMap 代替 HashMap(API Level 19 引入, 在 v4 兼容包存在兼容实现)
(4)对于集合的迭代尽量用 for 循环
(5)用 Android 提供的 @XXXDef
注解代替不同类型的枚举
(6)对于基本类型与字符串静态变量,用 final 修饰可以减少内存分配与额外操作
(7)字符串的连接考虑 StringBuilder\StringBuffer
(8)对于数组与集合的选择多仔细考虑
(9)及时关闭各种流(如 InputStream 等)的操作,释放资源
(10)使用对象池模式
减少对象的重复创建与垃圾回收
(11)使用享元模式
共享某一相同状态的对象,减少载入内存的量
(12)使用弱引用、软引用
等避免某些内存泄漏问题