跳到主要内容

内存与 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+)

核心知识点​

相关链接​