Java 内存屏障
2024-09-02 00:18:42
内存屏障(Memory Barrier,或有时叫做内存栅栏,Memory Fence)是一种CPU指令,用于控制特定条件下的重排序和内存可见性问题。Java编译器也会根据内存屏障的规则禁止重排序。
内存屏障可以被分为以下几种类型
1. LoadLoad屏障:对于这样的语句Load1; LoadLoad; Load2,在Load2及后续读取操作要读取的数据被访问前,保证Load1要读取的数据被读取完毕。
2. StoreStore屏障:对于这样的语句Store1; StoreStore; Store2,在Store2及后续写入操作执行前,保证Store1的写入操作对其它处理器可见。
3. LoadStore屏障:对于这样的语句Load1; LoadStore; Store2,在Store2及后续写入操作被刷出前,保证Load1要读取的数据被读取完毕。
4. StoreLoad屏障:对于这样的语句Store1; StoreLoad; Load2,在Load2及后续所有读取操作执行前,保证Store1的写入对所有处理器可见。它的开销是四种屏障中最大的。
5. 在大多数处理器的实现中,这个屏障是个万能屏障,兼具其它三种内存屏障的功能。有的处理器的重排序规则较严,无需内存屏障也能很好的工作,Java编译器会在这种情况下不放置内存屏障。
最新文章
- lamp 安装 apache php
- c# 无法引用自己创建的类库
- Prim求解最小生成树
- easyui datagrid使用(好)
- MYSQL数据库性能调优之六:备份
- Linux内核,文件系统移植过程中出现的一些问题与解决办法
- 【4】python核心编程 第七章-映射和集合类型
- iOS面试题04-runtime
- SQLServer索引循环删除
- Javascript高级编程学习笔记(88)—— Canvas(5)绘制文本
- 求助,我在安装SQL sever2016时遇到了这种情况
- powersploit的用法
- iOS开发简记(1):指定APP的图标与启动图
- java离线地图web GIS制作
- 学习笔记38—国外appleID注册教程
- (8)视图层参数request详解
- android 代码混淆模板
- Objective-C MacOS以管理员权限执行程序
- 内网php项目访问(切换在线解决)
- Activity设置背景透明之开发坑