当前位置:首页 > 内存 > 正文

jvm内存模型图(java 内存模型)

  • 内存
  • 2024-04-28 01:58:26
  • 6336

一、java课程分享java多线程的内存模型


硬件的内存模型

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


并发计算不仅仅是多个处理器参与计算,它会涉及到很多硬件问题,其中最直接的就是需要内存交互。然而,计算机的存储设备与处理器的预算速度相差太大,根本无法满足处理器的处理速度以及存储器之间的缓冲器。


缓存从内存中复制使用过的数据,以方便处理器快速运算,然后将计算出的数据同步到主存,以便处理器不必等待。


缓存在解决处理器和内存冲突的同时,也给计算机带来了另一个问题:缓存一致性。特别是,当多个处理器涉及相同的主存区域时,它们各自的缓存数据可能会不一致。


那么当出现不一致时,谁会占上风呢?


要解决这个问题,处理器和内存之间的读写必须遵循一定的协议。此类协议包括:MSI、MESI、MOSI、Synapse、Firefly和DragonProtocol等。这就是上图中处理器、缓存和内存的处理方式。

,输入的信息可以乱序重新排列,从而导致程序中语句计算的顺序与输入代码的顺序不匹配。



JVM内存模型

上面我们了解了内存模型到硬件,以此为参考,我们来看看jvm的内存模型。



jvm定义的一组java内存模型,用于实现跨平台一致的内存访问效果,从而屏蔽消除了不同硬件和操作系统的内存访问差异。这与C和C++会直接使用操作系统的物理硬件和内存模型不同,因此在每个平台上都会有差异。


Java的内存模型规定所有变量都存储在主存中Java课程发现每个线程都有自己的工作内存,工作内存中存储的是线程使用的变量的主内存副本。线程对变量的所有操作、读取和赋值都必须在工作内存中执行,变量必须在主内存中完成。