java中cpu缓存一致性对编程有什么帮助
本篇内容主要讲解“java中cpu缓存一致性对编程有什么帮助”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java中cpu缓存一致性对编程有什么帮助”吧!
创新互联专业为企业提供禹王台网站建设、禹王台做网站、禹王台网站设计、禹王台网站制作等企业网站建设、网页设计与制作、禹王台企业网站模板建站服务,10余年禹王台做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
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缓存一致性对编程有什么帮助”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
网页名称:java中cpu缓存一致性对编程有什么帮助
网站URL:http://pwwzsj.com/article/pcgphi.html