空间局部性
一、空间局部性详解
当我们把最近一段时间创建的对象放到不同的内存区域,这个时候我们称这个分配没有空间局部性,从对象访问理论上看,创建时间相近的对象具有较高的相关性,也就是说会级联访问对象,那么当对象散落在距离较远的内存中,这是访问对象无法命中cpu缓存行。所以我们给对象分配空间时,需要具有空间局部性,将对象放在相邻的内存上。
1. 核心概念
graph LR
空间局部性 --> 原理[邻近数据大概率被连续访问]
原理 --> 硬件基础[CPU缓存行机制]
硬件基础 --> 优化[缓存命中率提升]
优化 --> 效果[访问速度提升5-10倍]
2. 内存布局示例
graph LR
RegionA["Region 0x1000"] --> 对象A
RegionA --> 对象B
RegionA --> 对象C
RegionB["Region 0x2000"] --> 对象D
RegionB --> 对象E
访问模式 --> 顺序["对象A→B→C"]
顺序 --> 高效["缓存命中"]
跨Region访问 --> 对象访问["对象A→D"]
对象访问 --> 低效["缓存未命中"]