java 内存模型(1)

作者 : 开心源码 本文共695个字,预计阅读时间需要2分钟 发布时间: 2022-05-12 共227人阅读

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)

发表回复