JVM---Java存储模型
2024-10-07 10:16:25
1、概述
1.1、Java语言规范 规定了 JVM要维护 内部线程类似顺序化语意(只要程序的最终结果 等同于 它在严格的顺序化环境中执行的结果);
2、平台的存储模型
2.1、现代的处理器、编译器 为了从你的程序中榨取性能,会用尽手段;
2.2、在 可共享内存的多处理器 体系架构中,每个处理器都有自己的缓存,并且周期性地 与主内存协调一致;
2.3、处理器 牺牲 存储一致性的保证来换取性能的提升;
同时定义了一些特殊的指令(存储关卡、栅栏),用以在需要共享数据时,得到额外的存储协调保证;
2.4、为了帮助Java开发者 屏蔽这些跨架构的存储模型之间的不同,Java提供了自己的内存模型;
JVM会在适当的位置 插入 存储管卡,来 解决JMM与底层平台存储模型之间的差异化;
3、重排序
3.1、各种能够引起操作延迟或者错误执行的不同原因,统称为:重排序;
4、Java存储模型的简介
4.1、Java存储模型的定义 通过 动作的形式 进行描述;
动作:变量的读写、监视器加锁和释放锁、线程的启动和拼接;
4.2、JMM 为所有的程序内部的动作 定义了一个偏序关系(happens-before);
当一个变量 被多个线程读取,至少被一个线程写入时,如果 读写操作 未按照happens-before排序,就会发生 数据竞争;
一个正确同步的程序 是 没有数据竞争的 程序;
最新文章
- vim显示行号
- Keil的使用方法 - 常用功能(二)
- Linux嵌入式系统与硬件平台的关系
- OutputDebugString()
- Swift 提示 error running playground...
- 武汉科技大学ACM:1001: 华科版C语言程序设计教程(第二版)习题6.7
- 【阿里聚安全·安全周刊】双十一背后的“霸下-七层流量清洗”系统| 大疆 VS “白帽子”,到底谁威胁了谁?
- Django中用户权限模块
- powerdesigner添加mysql的字符集支持
- Bootstrap4 导航栏
- JavaSE| String常用方法
- Vue延迟点击
- Charles 网络抓包工具
- file文件与base64字符串的相互转换
- css3动画性能优化--针对移动端卡顿问题
- python 异常知识点
- 使用Fiddler做抓包分析
- 在 C Level 用 dlopen 使用 第三方的 Shared Library (.so)
- Mybatis简化sql书写,别名的使用
- 汇编Shellcode的技巧