java 8解决伪共享问题

本文探讨了CPU缓存中的伪共享问题,如何通过填充(padding)方式避免不同变量间的干扰,以及Java 8中的@Contended注解在解决此问题的应用。重点介绍了如何提升并发程序的性能和降低缓存失效频率。

1.CPU有三级缓存,缓存数据是以缓存行(Cache line)一般64字节为单位
2.不同的变量,若在同一个cache line,可能会相互影响,导致频繁的缓存失效
3.伪共享问题最简单的是填充(padding)方式,即牺牲掉一部分CPU缓存,使得一个cache line只缓存一个变量,其余剩余部分自动填充补位
4.java 8可使用@Contended实现,添加后默认不生效,必须jvm启动十加 -XX:-RestrictContended

参考:伪共享(false sharing),并发编程无声的性能杀手 - cyfonly - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值