缓存一致性协议MESI

概念

缓存一致性协议,CPU多核缓存,主存

状态

M 修改
E 独享、互斥 (Exclusive)
S 共享 (Shared)
I 无效 (Invalid)

伪共享

Cache Line 缓存行通常是 64 字节
根据:
时间局部性(Temporal Locality):如果一个信息项正在被访问,那么在近期它很可能还会被再次访问
空间局部性(Spatial Locality):如果一个存储器的位置被引用,那么将来他附近的位置也会被引用

Cache Line加载是连续的一段

Java避免伪共享,补齐参数为64字节

1
2
3
4
5
6
//jdk1.8新方法
//添加vm options参数 -XX:-RestrictContended
@sun.misc.Contended
public final static class VolatileLong3 {
public volatile long value = 0L;
}

参考

https://www.cnblogs.com/yanlong300/p/8986041.html
https://juejin.cn/post/6934528318888738824