Article / 2026/05/31
性能优化 (二十一) android内存管理机制
性能优化 (二十一) android内存管理机制 的技术笔记。
android内存管理机制
Java内存管理机制
- 方法区 :Java类信息,java的常量变量,静态变量 ,所有线程都共享的。
- 虚拟机栈 :java 方法 ,局部变量表、操作数栈
- 本地方法栈:native方法服务
- 堆:最大的区域,所有线程共享的,引用,gc主要作用的区域
- 程序计数器: 存储方法执行到哪行。
Java内存回收算法
- 标记-清除算法
- 标记处所有需要回收的对象
- 统一回收所有被标记的对象
- 标记和清除效率不高
- 产生大量不连续的内存碎片
- 复制算法
- 将内存划分为大小相等的两块
- 一块内存用完之后复制存活对象到另一块
- 清理另一块内存
- 实现简单,运行高效
- 浪费 一半空间,代价大
- 标记整理算法
- 标记过程与标记-清除算法一样
- 存活对象往一端进行移动
- 清除其余内存
- 避免标记-清理导致的内存碎片
- 避免复制算法的空间浪费
- 分代收集算法
- 结合多种手机算法优势
- 新生代对象存活率低,复制
- 老年代对象存活率高,标记整理
Android内存管理机制
-
内存弹性分配,分配值与最大值受具体设备影响
-
OOM场景:内存真正不足、可用内存不足
-
Dalvik与Art区别
-
Dalvik仅固定一种回收算法
-
Art回收算法可运行期选择
-
Art具备内存整理能力,减少内存空洞
-
Low Memory Killer
-
进程分类:前台进程,可视进程,服务进程,后台进程
-
回收收益
Giscus 未启用:请在
src/site.config.ts中配置 repoId 与 categoryId。