Java内存屏障简介
创始人
2024-05-30 00:47:09
0

简介

内存屏障是插入两个CPU命令之间的命令,禁止处理器命令的重新排序(如屏障),以确保有序性。此外,为了达到屏障的效果,在处理器写入、读取值之前,将主机的值写入缓存,清空无效的队列,保障可见性。

 

使用场景

Synchronized关键词包含的代码区域,在线程进入该区域阅读变量信息时,确保阅读的是最新值。这是因为在同步区域内写入变量操作,离开同步区域时将目前线程内的数据更新到内存,数据的阅读也不能从缓存中阅读,只能从内存中阅读,保证数据的阅读效果。这是插入StoreStore屏障。

使用volatile修饰变量时,将变量的写作操作插入StoreLoad屏障。

不同硬件实现内存屏障的方式不同,Java内存模型屏蔽了这种底层硬件平台的差异,由JVM来为不同的平台生成相应的机器码。
Java内存屏障主要有Load和Store两类。
对Load Barrier来说,在读指令前插入读屏障,可以让高速缓存中的数据失效,重新从主内存加载数据
对Store Barrier来说,在写指令之后插入写屏障,能让写入缓存的最新数据写回到主内存

对于Load和Store,在实际使用中,又分为以下四种:

LoadLoad 屏障 :

序列:Load1,Loadload,Load2
确保Load1所要读入的数据能够在被Load2和后续的load指令访问前读入。通常能执行预加载指令或/和支持乱序处理的处理器中需要显式声明Loadload屏障,因为在这些处理器中正在等待的加载指令能够绕过正在等待存储的指令。
而对于总是能保证处理顺序的处理器上,设置该屏障相当于无操作。

StoreStore 屏障 :

序列:Store1,StoreStore,Store2
确保Store1的数据在Store2以及后续Store指令操作相关数据之前对其它处理器可见(例如向主存刷新数据)。通常情况下,如果处理器不能保证从写缓冲或/和缓存向其它处理器和主存中按顺序刷新数据,那么它需要使用
StoreStore屏障。

LoadStore 屏障 :

序列: Load1; LoadStore; Store2
确保Load1的数据在Store2和后续Store指令被刷新之前读取。在等待Store指令可以越过loads指令的乱序处理器上需要使用LoadStore屏障。

StoreLoad 屏障 :

序列: Store1; StoreLoad; Load2
确保Store1的数据在被Load2和后续的Load指令读取之前对其他处理器可见。StoreLoad屏障可以防止一个后续的load指令
不正确的使用了Store1的数据,而不是另一个处理器在相同内存位置写入一个新数据。正因为如此,所以在下面所讨论的处理器为了在屏障前读取同样内存位置存过的数据,必须使用一个StoreLoad屏障将存储指令和后续的加载指令分开。Storeload屏障在几乎所有的现代多处理器中都需要使用,但通常它的开销也是最昂贵的。它们昂贵的部分原因是它们必须关闭通常的略过缓存直接从写缓冲区读取数据的机制。这可能通过让一个缓冲区进行充分刷新(flush),以及其他延迟的方式来实现。
 

相关内容

热门资讯

windows改回mac系统,... Windows系统改回Mac系统的详细步骤准备工作在进行Windows系统改回Mac系统的操作之前,...
windows操作系统如何取消... Windows操作系统如何取消隐藏属性随着电脑在日常生活中的广泛应用,文件和文件夹的隐藏功能也成为了...
windows安卓双系统安装教... Windows与安卓双系统安装教程视频:轻松实现电脑多系统共存一、准备工作在开始安装之前,我们需要做...
windows和国产操作系统,... Windows与国产操作系统:竞争与融合的科技舞台随着信息技术的飞速发展,操作系统作为计算机系统的核...
windows回到os系统,W... Windows系统如何切换回Mac OS系统准备工作在开始操作之前,请确保您的苹果电脑已经安装了Bo...
windows电视系统怎么升级... Windows电视系统升级与更新指南一、了解Windows电视系统升级的重要性1. 提升系统性能:系...
windows操作系统各版本区... Windows操作系统各版本区别详解Windows操作系统自1985年发布以来,经历了多个版本的迭代...
windows都有哪些系统文件... Windows系统文件大全:了解操作系统核心组件Windows操作系统作为全球最广泛使用的桌面操作系...
windows盗版系统桌面黑屏... Windows盗版系统桌面黑屏怎么办?全面解析解决方法在电脑使用过程中,不少用户可能会遇到Windo...
Windows还会出新系统吗,... Windows还会出新系统吗?揭秘微软的未来操作系统规划Windows 11的推出与市场反响2021...
windows安装系统登录卡在... Windows安装系统登录卡在账户界面怎么办?全面解析及解决方法在Windows系统安装或更新过程中...
windows操作系统特征,W... Windows操作系统的典型特征与主要功能随着计算机技术的飞速发展,Windows操作系统已经成为全...
windows电脑 c盘重装系... Windows电脑C盘重装系统全攻略随着电脑使用时间的增长,系统运行速度变慢、频繁死机等问题逐渐显现...
windows电脑可以装国产系... Windows电脑可以安装国产系统吗?全面解析国产系统兼容性及安装方法随着我国科技实力的不断提升,国...
windows电脑装入苹果系统... Windows电脑装入苹果系统:黑苹果体验指南一、什么是黑苹果?黑苹果,顾名思义,是指将苹果操作系统...
windows98系统虚拟键盘... Windows 98系统中的虚拟键盘:便捷输入的得力助手在Windows 98这个经典的操作系统时代...
安装新的操作系统,如何安装新的... 新手必看:如何安装新的操作系统一、准备工作在开始安装新的操作系统之前,您需要做好以下准备工作: 确...
windows98系统怎么进D... Windows 98系统进入DOS的详细步骤在Windows 98系统中,进入DOS环境可以帮助用户...
windows操作系统如何进行... Windows操作系统资源管理指南随着计算机技术的不断发展,Windows操作系统已经成为广大用户的...
windows安全系统漏洞,成... 深入解析Windows安全系统漏洞:成因、影响及防护策略随着信息技术的飞速发展,Windows操作系...