内存屏障(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编译器会在这种情况下不放置内存屏障。

最新文章

  1. lamp 安装 apache php
  2. c# 无法引用自己创建的类库
  3. Prim求解最小生成树
  4. easyui datagrid使用(好)
  5. MYSQL数据库性能调优之六:备份
  6. Linux内核,文件系统移植过程中出现的一些问题与解决办法
  7. 【4】python核心编程 第七章-映射和集合类型
  8. iOS面试题04-runtime
  9. SQLServer索引循环删除
  10. Javascript高级编程学习笔记(88)—— Canvas(5)绘制文本
  11. 求助,我在安装SQL sever2016时遇到了这种情况
  12. powersploit的用法
  13. iOS开发简记(1):指定APP的图标与启动图
  14. java离线地图web GIS制作
  15. 学习笔记38—国外appleID注册教程
  16. (8)视图层参数request详解
  17. android 代码混淆模板
  18. Objective-C MacOS以管理员权限执行程序
  19. 内网php项目访问(切换在线解决)
  20. Activity设置背景透明之开发坑

热门文章

  1. Django-DRF组件学习-预备知识
  2. vue中的$EventBus.$emit、$on的应用
  3. java 内部编译异常的处理方法
  4. kafka学习(七)
  5. jenkins初级使用篇
  6. Grafana配置文件
  7. 第三次实验报告&&学习总结
  8. RSTP基础配置
  9. BindWeb - Bind智能DNS管理系统介绍
  10. 【转】mysqldump原理探究