本篇内容主要讲解“java中cpu缓存一致性对编程有什么帮助”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java中cpu缓存一致性对编程有什么帮助”吧!
1、数据对齐访问
因为对于short、int、long、以及小数组而言可能会跨2个cache line,这样cpu在读写时就要涉及到2个cache line,很明显这是低效的。至于这个问题在实际中如何解决,准备再单独写一篇关于java的解决方案。
2、保持数据空间局部性
在前面的数据空间局部性带来的效率差异测试中已经给出了测试结果,它说的是尽量将相邻的数据放在一个cache中并且按照连续空间进行访问。
3、多线程编程时避免伪共享
在前面的java并发编程专题---伪共享中也给出了测试结果,它说的是在业务上没有数据竞争,但是在cpu底层执行时由于各自读写的数据在同一个缓存行中,从而导致大量的cache miss影响了执行效率。这里对文中使用volatile关键字再做个补充说明,对于java而言如果没有volatile关键字,由于变量之间没有竞争,即使在同一个缓存行中,各线程也只读写各自变量的缓存副本,这是由jvm的特性决定的。当加了volatile关键字就是要让数据与内存同步,如果各自读写的变量在同一个缓存行中,这个时候就可以用MESI缓存一致性原理来解释了,因为当本核的cache line有数据更新时,其它核中的cache line就是被置为无效,所以导致频繁的cache miss。
到此,相信大家对“java中cpu缓存一致性对编程有什么帮助”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。