美文网首页
86.java内存模型

86.java内存模型

作者: SlideException | 来源:发表于2020-08-23 13:50 被阅读0次

/**
* 每天一个知识点day86 TODO java内存模型
*
* Java内存模型的主要目的是定义程序中各种变量的访问规则,
* 即关注在虚拟机中把变量值存储到内存和从内存中取出变量值这样的底层细节。
* 此处的变量与java编程中所说的变量有所区别,它包括了实例字段,静态字段
* 和构成数组对象的元素,但是不包括局部变量与方法参数,
* java内存模型规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,
* 线程的工作内存中保存了被该线程使用的变量的主内存副本,线程对变量的所有
* 操作都必须在工作内存中进行,而不能直接读写主内存中的数据,
* 不同的线程之间也无法访问到对方工作内存中的变量,线程间变量值的传递需要
* 通过主内存来完成。
*
* 这里所讲的工作内存和主内存与java中的堆 栈 方法区并不是同一个层次的对内存
* 的划分,这两者基本上是没有任何关系的,如果两者一定要勉强对应起来,那么从
* 变量 工作内存 主内存的定义来看,主内存主要对应于java堆中的对象实例数据部分
* 而工作内存则对应虚拟机栈中的部分区域,从更基础的层次上说,主内存直接对应于
* 物理硬件的内存,而为了获取更好的运行速度,虚拟机可能会让工作内存优先存储于
* 寄存器和高速缓存中,因为程序运行时主要访问的是工作内存。
*
* 关于主内存和工作内存之间的具体交互协议,即一个变量如何从主内存拷贝到工作
* 内存、如何从工作内存同步回主内存这一类的实现细节,java内存模型中定义了
* 以下8种操作来完成。
* lock 锁定 作用于主内存的变量,它把一个变量标识为一条线程独占的状态
* unlock 解锁 作用于主内存的变量
* read 读取 作用于主内存的变量
* load 载入 作用于工作内存的变量
* use 使用 作用于工作内存的变量
* assign 赋值 作用于工作内存的变量
* store 存储 作用于工作内存的变量
* write 写入 作用于主内存的变量
*
* 如果要把一个变量从主内存拷贝到工作内存,那就要按顺序执行read和load操作,
* 如果要把变量从工作内存同步回主内存,就要按顺序执行store和write操作,
* java内存模型只要求以上两个操作必须是按顺序执行,但不要求是连续执行。
*
*
*
*/

相关文章

  • 86.java内存模型

    /*** 每天一个知识点day86 TODO java内存模型** Java内存模型的主要目的是定义程序中各种变量...

  • Flink JobManager | TaskManager内存

    Flink内存模型分析 JobManager内存模型 TaskManager内存模型 内存模型分析 Flink使用...

  • 图解jvm--(四)内存模型

    内存模型 java 内存模型 很多人将【java 内存结构】与【java 内存模型】傻傻分不清,【java 内存模...

  • JVM内存模型(jvm 入门篇)

    概述 jvm 入门篇,想要学习jvm,必须先得了解JVM内存模型,JVM内存模型,JVM内存模型,JVM内存模型,...

  • java内存模型

    1.内存模型(JMM) 1.1什么是Java内存模型? Java内存模型将内存分为主内存和工作内存两大部分;主内存...

  • [Java多线程编程之八] Java内存模型

    一、Java内存模型 == JVM内存模型?   很多人都会认为Java内存模型就是JVM内存模型,但实际上是错的...

  • 深度解析Java多线程的内存模型

    内部java内存模型 硬件层面的内存模型 Java内存模型和硬件内存模型的联系 共享对象的可见性 资源竞速 Jav...

  • java虚拟机-内存模型与线程

    一、java内存模型 java定义的内存模型是类似物理计算机的三级缓存模型 1.主内存与工作内存 java内存模型...

  • CPU内存模型 和 JAVA内存模型 讲解

    CPU 内存模型 在讲解 JAVA 内存模型之前,先了解 CPU 内存模型,因为JAVA内存模型跟它是十分相似的。...

  • Java基础之内存模型

    Java基础之内存模型 目录 Java内存模型简单介绍 JVM介绍 存储方式 并发原因 Java内存模型与系统内存...

网友评论

      本文标题:86.java内存模型

      本文链接:https://www.haomeiwen.com/subject/umiijktx.html