Android内核 · 内存回收机制
📚 深度解读
30章
1
内存管理全景
Android内存子系统架构概览 · 应用层到内核层
2
物理内存与虚拟内存
物理页帧 · 虚拟地址空间 · MMU与页表
3
伙伴系统 (Buddy System)
核心算法 · 碎片化 · alloc_pages流程
4
SLAB分配器
SLAB/SLUB/SLOB · kmalloc · 对象复用
5
页回收基础 (Page Reclaim)
LRU链表 · 活跃/非活跃页 · shrink_list
6
kswapd内核线程
唤醒条件 · 水位线 · 内存压力等级
7
直接内存回收 (Direct Reclaim)
触发场景 · 与kswapd协作 · 性能抖动
8
OOM Killer
oom_score_adj · 选择策略 · 内核日志
9
内存压缩 (zRAM)
zRAM原理 · LZ4/LZO · swap对比
10
内存碎片整理 (Compaction)
触发条件 · 迁移扫描 · 伙伴系统交互
11
CMA (Contiguous Memory Allocator)
CMA区域 · 动态分配 · Camera/GPU场景
12
文件页回写 (Writeback)
脏页回写 · pdflush/flusher · 阈值控制
13
匿名页回收
swap out · swap cache · 分区与文件
14
页缓存 (Page Cache)
页缓存结构 · 预读 · 缓存命中率优化
15
内存映射 (mmap)
文件/匿名映射 · 缺页中断 · 大页支持
16
cgroup内存控制
memory cgroup · 上限/软限制 · oom控制
17
LMK (Low Memory Killer)
Android低内存杀进程 · 与内核OOM差异
18
LMKD (Low Memory Killer Daemon)
用户态守护进程 · psi监控 · kill策略
19
进程内存统计
/proc/pid/status · PSS/RSS/USS · smaps
20
内核内存调试工具
slabinfo · vmstat · meminfo · tracepoint
21
内存压力通知 (PSI)
PSI指标 · pressure_level · LMKD联动
22
KASLR与内存安全
内核地址随机化 · vmalloc保护 · 堆栈检测
23
DMA与IOMMU
DMA分配 · IOMMU页表 · SMMU作用
24
GPU内存管理
ION分配器 · dmabuf · GPU/CPU一致性
25
内存热插拔与气球驱动
热插拔原理 · virtio-balloon · 云手机
26
KSM (Kernel Same-page Merging)
KSM原理 · 去重效率 · Android适用性
27
内存泄漏检测
kmemleak原理 · 使用方法 · 泄漏模式
28
Android特有内存优化
SchedTune · 内存感知调度 · cpuset绑定
29
性能调优实战
vm参数调优 · dirty_ratio/swappiness · 排查
30
未来趋势与总结
MGLRU · folio化 · 内存可扩展性展望