虚拟内存与分页

应用通常使用虚拟地址。操作系统与硬件共同将其转换为物理地址,使不同进程拥有相对独立的地址空间。

地址转换

分页机制将虚拟地址划分为页号和页内偏移。页表记录虚拟页到物理页框的映射及权限信息。

虚拟地址 = 虚拟页号 + 页内偏移
                ↓ 页表映射
物理地址 = 物理页框号 + 页内偏移

TLB 缓存近期的地址转换结果,以减少重复查页表的开销。

缺页意味着什么

访问无法按当前映射直接完成时,可能触发缺页异常。它不一定代表程序错误:按需分配、写时复制和从存储加载页面,都可能通过异常处理完成。

如果地址无效或访问权限不符合要求,操作系统可能向进程报告错误。

为什么局部性重要

  • 时间局部性:刚访问过的数据,近期可能再次访问。
  • 空间局部性:相邻的数据,可能接着被访问。

顺序遍历连续数据通常更容易利用缓存与预取。随机访问庞大数据集可能带来更多缓存和地址转换开销。

排查内存问题

区分虚拟地址空间、实际驻留内存和应用分配量。它们是不同指标,不能只凭一个数字判断泄漏。结合持续增长趋势、对象生命周期和运行环境的工具分析。