java多线程的内存模型?

jvm定义的一套java内存模型为了能够跨平台达到一致的内存访问效果,从而屏蔽掉了各种硬件和操作系统的内存访问差异。这点和c和c++并不一样,C和C++会直接使用物理硬件和操作系统的内存模型来处理,所以在各个平台上会有差异,这一点java不会。java的内存模型规定了所有的变量都存储在主内存中,java课程发现...
java多线程的内存模型?


硬件的内存模型
物理机并发处理的方案对于jvm的内存模型实现,也有很大的参考作用,毕竟jvm也是在硬件层上来做事情,底层架构也决定了上层的建筑建模方式。

计算机并发并非只是多个处理器都参与进来计算就可以了,会牵扯到一些列硬件的问题,最直接的就是要和内存做交互。但计算机的存储设备与处理器的预算速度相差太大,完全不能满足处理器的处理速度,怎么办,这就是后续加入的一层读写速度接近处理器运算速度的高速缓存来作为处理器和内存之间的缓冲。

高速缓存一边把使用的数据,从内存复制搬入,方便处理器快速运算,一边把运算后的数据,再同步到主内存中,如此处理器就无需等待了。

高速缓存虽然解决了处理器和内存的矛盾,但也为计算机带来了另一个问题:缓存一致性。特别是当多个处理器都涉及到同一块主内存区域的时候,将可能会导致各自的缓存数据不一致。

那么出现不一致情况的时候,以谁的为准?

为了解决这个问题,处理器和内存之间的读写的时候需要遵循一定的协议来操作,这类协议有:MSI、MESI、MOSI、Synapse、Firefly以及DragonProtocol等。这就是上图中处理器、高速缓存、以及内存之间的处理方式。

另外除了高速缓存之外,为了充分利用处理器,处理器还会把输入的指令码进行乱序执行优化,只要保证输出一致,输入的信息可以乱序执行重组,所以程序中的语句计算顺序和输入代码的顺序并非一致。

JVM内存模型
上面我们了解了硬件的内存模型,以此为借鉴,我们看看jvm的内存模型。

jvm定义的一套java内存模型为了能够跨平台达到一致的内存访问效果,从而屏蔽掉了各种硬件和操作系统的内存访问差异。这点和c和c++并不一样,C和C++会直接使用物理硬件和操作系统的内存模型来处理,所以在各个平台上会有差异,这一点java不会。

java的内存模型规定了所有的变量都存储在主内存中,java课程发现每个线程拥有自己的工作内存,工作内存保存了该线程使用到的变量的主内存拷贝,线程对变量所有操作,读取,赋值,都必须在工作内存中进行,不能直接写主内存变量,线程间变量值的传递均需要主内存来完成。

2023-04-03
mengvlog 阅读 8 次 更新于 2025-07-19 08:36:06 我来答关注问题0
  •  翡希信息咨询 Java内存模型(JMM)详解

    Java内存模型是Java语言为解决跨平台并发问题而制定的一套规范。以下是对JMM的详细解析:定义与目的:定义:JMM定义了线程与主内存之间的交互规则,确保多线程环境下的内存一致性。目的:使开发者能够在不同操作系统上编写出正确且一致的多线程代码。内存划分:主内存:逻辑上的共享内存,存储Java堆中的对象...

  • Java内存模型是Java并发编程的重要基石,它通过一系列规则和机制确保多线程环境下的数据一致性。以下是关于JMM的详细解答:核心概念:主内存与工作内存:所有变量都存储在主内存中,而每个线程拥有自己的工作内存,用于存储线程的私有变量。线程间的数据同步依赖于工作内存的副本机制。变量访问规范:JMM规范了变...

  • java的内存模型规定了所有的变量都存储在主内存中,java课程发现每个线程拥有自己的工作内存,工作内存保存了该线程使用到的变量的主内存拷贝,线程对变量所有操作,读取,赋值,都必须在工作内存中进行,不能直接写主内存变量,线程间变量值的传递均需要主内存来完成。

  •  翡希信息咨询 Java内存模型(JMM)详解

    堆中的对象可以被多线程共享。3.2 Java内存模型和硬件架构之间的桥接 Java内存模型和硬件内存架构并不一致。硬件内存架构中并没有区分栈和堆,从硬件上看,不管是栈还是堆,大部分数据都会存到主存中,当然一部分栈和堆的数据也有可能会存到CPU寄存器中。Java内存模型和计算机硬件内存架构是一个交叉关系...

  • 3. Java内存模型中的内存屏障: Java内存模型抽象了四种内存屏障指令:LoadLoad、StoreStore、LoadStore、StoreLoad。 LoadLoad屏障:确保在同一个线程中,后续的读操作不会在前面的读操作之前完成。 StoreStore屏障:确保在同一个线程中,前面的写操作不会在后面的写操作之后被其他线程看到。 LoadStore屏障...

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部