虚拟内存与分页
应用通常使用虚拟地址。操作系统与硬件共同将其转换为物理地址,使不同进程拥有相对独立的地址空间。
地址转换
分页机制将虚拟地址划分为页号和页内偏移。页表记录虚拟页到物理页框的映射及权限信息。
TLB 缓存近期的地址转换结果,以减少重复查页表的开销。
缺页意味着什么
访问无法按当前映射直接完成时,可能触发缺页异常。它不一定代表程序错误:按需分配、写时复制和从存储加载页面,都可能通过异常处理完成。
如果地址无效或访问权限不符合要求,操作系统可能向进程报告错误。
为什么局部性重要
- 时间局部性:刚访问过的数据,近期可能再次访问。
- 空间局部性:相邻的数据,可能接着被访问。
顺序遍历连续数据通常更容易利用缓存与预取。随机访问庞大数据集可能带来更多缓存和地址转换开销。
排查内存问题
区分虚拟地址空间、实际驻留内存和应用分配量。它们是不同指标,不能只凭一个数字判断泄漏。结合持续增长趋势、对象生命周期和运行环境的工具分析。