大纲:
1
硬件原理和分页管理
CPU寻址内存,虚拟地址、物理地址
MMU以及RWX权限、kernel和user模式权限
内存的zone: DMA、Normal和HIGHMEM
Linux内存管理Buddy算法
连续内存分配器(CMA)
2
内存的动态申请和释放
slab、kmalloc/kfree、/proc/slabinfo和slabtop
用户空间malloc/free与内核之间的关系
mallopt
vmalloc
内存耗尽(OOM)、oom_score和oom_adj
Android进程生命周期与OOM
3
进程的内存消耗和泄漏
进程的VMA。
进程内存消耗的4个概念:vss、rss、pss和uss
page fault的几种可能性,major和minor
应用内存泄漏的界定方法
应用内存泄漏的检测方法:valgrind和addresssanitizer
4
内存与I/O的交换
page cache
free命令的详细解释
read、write和mmap
file-backed的页面和匿名页
swap以及zRAM
页面回收和LRU
5
其他工程问题以及调优
DMA和cache一致性
内存的cgroup
性能方面的调优:page in/out, swapin/out
Dirty ratio的一些设置
swappiness