java 内存模型(1)
java 内存模型也是语言级别的模型。而是 java 面试不不可缺少的问题。所谓模型就是定义 java 方法内存的规则。
什么是模型呢? 模型就是以对事物的形容,形容内容包括事物的属性和行为。
内存交互操作
其实整个流程和现在快递业务比较类似
- read : 读取主内存的值,而后传输到工作内存
- load : 将read 内存值存放到工作内存
read 就是快递运输车,将货物(内存值)从货场(主内存)运送到站点(工作内存)。
load read 只是运送过去,并没有卸货 load 就是将货物加载到站点。
- use : 将工作区的变量值交给引擎解决
- assign : 引擎解决对变量进行修改
- store : 将工作内存的运输返回到主内存
- write : 将工作内存值写入主内存
快递员获取签收的凭证,返回到货站升级获取货站中货物的状态。
- lock : 用于主内存,将主内存中将一个变量表示为一个线程独占。
- unlock : 作用于主内存变量,用于解锁变量
内存指令规则
- read 和 load 以及 store 和 write 必需成对出现
- assign 操作,工作内存变量改变后必需返回到主内存
- 同一个时间只能运行一个线程对变量进行 lock,当前线程 lock 可重入,unlock 次数必需等于 lock 的次数,该变量才能解锁。
- 对一个变量 lock 后,会从工作内存中清理变量值,重新执行 load 或者者 assign 操作初始化工作区的内存。
- unlock 前,必需将变量同步到主内存(store/write)操作
重排序
- 编译器重排
编译器在不改变单线程程序语句的语义的前提下,可以重排语句执行顺序 - 指令级并行的重排序
现代解决器采用了指令级并行技术实现多条指令重叠执行,在不存在数据依赖的时候,解决器可以改变指令执行的顺序
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » java 内存模型(1)
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » java 内存模型(1)