美文网首页
硬件内存与java内存模型

硬件内存与java内存模型

作者: wilkSon | 来源:发表于2019-07-11 15:04 被阅读0次

CPU操作速度, 寄存器 > 缓存 > 主存  主存也叫RAM

        不管是栈和堆大部分都会存储到主存中,一部分堆和栈的数据可能会存储到寄存器中

当对象中的各变量存储到计算机内存时:

1. 共享对象对各个线程的可见性

2. 共享对象的竞争现象

CPU的线程读取主存中的共享变量到缓存中, 然后对共享变量的更改没有同步到主存中,此时对另一个线程来说共享变量将无法更新可以使用violate关键字:violate关键字将直接从主存中读取,对变量的更新也会直接写入到主存中, violate基于内存屏障指令实现

violate  可见性, 原子性, 禁止JVM指令重排

内存屏障:

保证特定操作的执行顺序,影响某些数据(或则是某条指令的执行结果)的内存可见性

指令重排:

  在计算机执行指令的顺序在经过程序编译器编译之后形成的指令序列, CPU和编译器为了提高程序的执行效率,会按照一定的规则进行指令优化,在某些情况下会产生逻辑问题, 在并发情况下会产生二义性

as-if-serial: 不管怎么排序,单线程的执行结果不会变

as-if-serial语义把单线程程序保护了起来,遵守as-if-serial语义的编译器,runtime 和处理器共同为编写单线程程序的程序员创建了一个幻觉:单线程程序是按程序的顺序来执行的。as-if-serial语义使单线程程序员无需担心重排序会干扰他们,也无需担心内存可见性问题

java 内存模型

所有的变量都存储在主内存中,每个线程都有自己的工作内存,线程的工作内存中保存了线程变量的主内内存拷贝,线程对所有变量的操作都必须在工作内存中进行,而不能直接读写主内存变量

主内存主要对应java堆中的对象实例数据部分, 工作内存主要对应于java虚拟机栈中的部分

相关文章

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

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

  • 高效并发

    从JVM的角度看一下Java与线程,内存模型,线程安全以及JVM对于锁的优化 硬件内存模型与JVM内存模型 硬件的...

  • java基础知识

    java 内存区域、JMM、JAVA线程模型、硬件内存模型 java内存区域分为共享区域(堆、方法区常量池)、私有...

  • java 面试题 并发相关

    java 的内存模型(JMM) 主内存 java内存模型规定所有变量存放在主内存中 类比硬件中的内存 工作内存 每...

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

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

  • JMM内存模型

    什么是Java内存模型 Java内存模型是一种符合内存模型规范的,屏蔽了各种硬件和系统的访问差异。保证Java程序...

  • 计算机存储系统(RAM)/JMM(JavaMemoryModel

    Jvm内存结构Java内存模型Java内存区域及对象Java内存模型2 1. 硬件存储体系结构 当代计算机通常是多...

  • Java内存模型与线程——《深入理解JVM》读书笔记

    一、Java内存模型 Java内存模型(Java Memory Model,JMM)是用来屏蔽各种硬件和操作系统的...

  • Java内存模型与硬件内存模型

    硬件内存模型 不管是什么内存模型,最终还是运行在计算机硬件上的,所以我们有必要了解计算机硬件内存架构 现代计算机一...

  • 硬件内存与java内存模型

    CPU操作速度, 寄存器 > 缓存 > 主存 主存也叫RAM 不管是栈和堆大部分都会存储到主存中,一部分堆...

网友评论

      本文标题:硬件内存与java内存模型

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