跳到主要内容

内存与 GC 知识体系概览

问题

Android 应用的内存管理机制是怎样的?

答案

Android 内存模型

每个 Android 应用运行在独立的 ART 虚拟机进程中,有自身的堆(Heap)空间。系统根据设备内存和应用前后台状态分配堆大小。

堆大小限制

# 查看设备堆大小限制
adb shell getprop dalvik.vm.heapsize # 最大堆(一般 256-512MB)
adb shell getprop dalvik.vm.heapgrowthlimit # 普通应用限制(一般 128-256MB)
内存区域说明
Java Heap对象存活区域,GC 管理
Native HeapJNI 分配、Bitmap(8.0+)
Codedex/oat 映射
Stack线程栈空间
GraphicsGPU 纹理、Surface

ART GC 特点(vs Dalvik)

特性DalvikART
GC 方式Mark-and-Sweep,STW 长Concurrent Copying,STW 极短
堆碎片压缩整理,无碎片
分配速度快(TLAB 线程本地分配)
编译JITAOT + JIT(Android 7.0+)

核心知识点

相关链接