伪共享:即多线程下对多线程对不同变量进行读取时,由于不同变量在同一个cache line中,导致类似“共享”情况,导致性能下降
java jdk解决方法:
1、jdk1.6:自动填充变量使其变量长度达到64byte,这样一个cache line只有一个变量,就不会有伪共享问题
2、jdk1.7:jdk会进行变量优化,简单填充会被优化导致无用,所以需要使用继承方法,扩充变量大小,达到64byte长度
3、jdk1.8:原生支持自动填充解决问题,但是需要对象加注解(@Contended),进行自动缓存行填充,执行时,必须加上虚拟机参数-XX:-RestrictContended