博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java内存模型
阅读量:6275 次
发布时间:2019-06-22

本文共 637 字,大约阅读时间需要 2 分钟。

java内存模型

目的

java虚拟机通过试图定义一种java内存模型来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台下都能达到一致的内存访问效果。

实现方式

主内存和工作内存

1.所有变量存储在主内存中

2.工作内存保存了主内存的副本拷贝

3.线程对所有变量的操作(读取、赋值)都必须在工作内存中进行

4.线程减变量值得传递都必须通过主内存来完成

内存间交互操作

【lock】作用于主内存的变量,把一个变量标识为一条线程独占

【unlock】作用于主内存的变量,把一个锁定的变量释放出来

【read】作用于主内存的变量,把一个变量从主内存中读取出来以便随后的load使用

【load】作用于工作内存的变量,把read操作获取的变量放入工作内存的变量副本中

【use】作用于工作内存的变量,使用

【assign】作用于工作内存的变量,重新赋值

【store】作用于工作内存的变量,把变量的值传入到主内存中以便随后的write操作使用

【write】作用于主内存的变量

对于volatile型变量的特殊规则

volatile变量具有两种特性:

1.保证此变量对所有线程的可见性(如果一条线程改变了这个变量的值,新值对于其他线程是立即得知的)

java的运算并非原子性的导致volatile变量的运算在并发出现不安全

2.禁止指令重排序优化

 

转载于:https://www.cnblogs.com/share2perfect/p/7695950.html

你可能感兴趣的文章
Linux_DHCP服务搭建
查看>>
[SilverLight]DataGrid实现批量输入(like Excel)(补充)
查看>>
秋式广告杀手:广告拦截原理与杀手组织
查看>>
翻译 | 摆脱浏览器限制的JavaScript
查看>>
闲扯下午引爆乌云社区“盗窃”乌云币事件
查看>>
02@在类的头文件中尽量少引入其他头文件
查看>>
JAVA IO BIO NIO AIO
查看>>
input checkbox 复选框大小修改
查看>>
网吧维护工具
查看>>
BOOT.INI文件参数
查看>>
vmstat详解
查看>>
新年第一镖
查看>>
unbtu使用笔记
查看>>
MaxCompute 学习计划(一)
查看>>
OEA 中 WPF 树型表格虚拟化设计方案
查看>>
Android程序开发初级教程(一) 开始 Hello Android
查看>>
使用Gradle打RPM包
查看>>
“我意识到”的意义
查看>>
淘宝天猫上新辅助工具-新品填表
查看>>
再学 GDI+[43]: 文本输出 - 获取已安装的字体列表
查看>>