JVM 重排序

  在java代码到最终执行的指令序列的整个过程中,会出现重排序.也就是说最终执行的顺序并不是按照源代码执行的顺序来进行的.

其中1为编译器的优化重排序,2,3是处理器的重排序.

数据依赖

  如果两个操作访问同一个变量的话,而且其中一个为写操作,那么这两个操作是存在数据数据依赖的.  

  

  JMM规定,存在数据依赖的操作的执行顺序不能被重排的.这里所说的数据依赖是指的是单个处理器或者单个线程之间的两个操作,对于不同处理器或者不同线程之间的数据依赖不被编译器或者处理器考虑.

  

as-if-serial语义

  指的是不管如何的重排序,最终的处理结果是不能改变的.所以存在数据依赖的操作是不能被重排序的.  

posted @   平林新袖  阅读(305)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
· 程序员常用高效实用工具推荐,办公效率提升利器!
历史上的今天:
2014-03-31 java - final和static 关键字 再记忆
点击右上角即可分享
微信分享提示