空间局部性

59 阅读1分钟

空间局部性

一、空间局部性详解

当我们把最近一段时间创建的对象放到不同的内存区域,这个时候我们称这个分配没有空间局部性,从对象访问理论上看,创建时间相近的对象具有较高的相关性,也就是说会级联访问对象,那么当对象散落在距离较远的内存中,这是访问对象无法命中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"]
    对象访问 --> 低效["缓存未命中"]