Article / 2026/05/31

性能优化 (二十一) android内存管理机制

性能优化 (二十一) android内存管理机制 的技术笔记。

android内存管理机制

Java内存管理机制

  • 方法区 :Java类信息,java的常量变量,静态变量 ,所有线程都共享的。
  • 虚拟机栈 :java 方法 ,局部变量表、操作数栈
  • 本地方法栈:native方法服务
  • 堆:最大的区域,所有线程共享的,引用,gc主要作用的区域
  • 程序计数器: 存储方法执行到哪行。

Java内存回收算法

  • 标记-清除算法
  1. 标记处所有需要回收的对象
  2. 统一回收所有被标记的对象
  3. 标记和清除效率不高
  4. 产生大量不连续的内存碎片
  • 复制算法
  1. 将内存划分为大小相等的两块
  2. 一块内存用完之后复制存活对象到另一块
  3. 清理另一块内存
  4. 实现简单,运行高效
  5. 浪费 一半空间,代价大
  • 标记整理算法
  1. 标记过程与标记-清除算法一样
  2. 存活对象往一端进行移动
  3. 清除其余内存
  4. 避免标记-清理导致的内存碎片
  5. 避免复制算法的空间浪费
  • 分代收集算法
  1. 结合多种手机算法优势
  2. 新生代对象存活率低,复制
  3. 老年代对象存活率高,标记整理

Android内存管理机制

  • 内存弹性分配,分配值与最大值受具体设备影响

  • OOM场景:内存真正不足、可用内存不足

  • Dalvik与Art区别

  • Dalvik仅固定一种回收算法

  • Art回收算法可运行期选择

  • Art具备内存整理能力,减少内存空洞

  • Low Memory Killer

  • 进程分类:前台进程,可视进程,服务进程,后台进程

  • 回收收益

Giscus 未启用:请在 src/site.config.ts 中配置 repoId 与 categoryId。