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

jvm内存模型的理解(jvm内存模型有哪些)

  • 内存
  • 2024-06-13 18:03:42
  • 4680

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


硬件内存模型

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


计算机并发性不仅仅是让多个处理器参与计算。这会涉及到一系列的硬件问题。最直接的问题是内存处理。相互影响。然而,计算机的存储设备与处理器的预算速度相差太大,无法满足处理器的处理速度。你必须做什么?作为处理器和存储器之间的缓冲区。


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


缓存虽然解决了处理器和内存之间的冲突,但它也给计算机带来了另一个问题:缓存的一致性。特别是当多个处理器使用同一个主存区域时,各自的缓存数据可能不一致。


那么当发生冲突时,谁会占上风呢?


为了解决这个问题,处理器和内存之间的读写需要遵循一定的协议,例如:MSI、MESI、MOSI、Synapse、Firefly和DragonProtocol,ETC。这就是上图中处理器、缓存和内存的处理方式。


除了缓存之外,为了充分利用处理器,处理器还会优化不按代码顺序执行输入指令,只要当输出一致时,输入信息可以乱序重新排列,从而使程序中语句计算的顺序与输入代码的顺序不一致。



JVM内存模型

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



jvm为了实现高效访问内存而定义的一套java内存模型,跨平台是一致的,从而屏蔽不同硬件和操作系统的内存访问差异。这与C和C++不同。C和C++会直接利用操作系统的物理硬件和内存模型进行处理,因此在各个平台上会有差异。


Java的内存模型规定所有变量都存储在主存中。Java课程认识到每个线程都有自己的工作内存,并且工作内存是被缓存的。线程使用的变量的主内存副本。所有线程操作(读取和分配变量)都必须在工作内存中执行。在请求线程之间传递变量值。主存储器完成。



二、jvm底层原理是什么呢?有大神可以说说吗?JVM是Java虚拟机的缩写,它是Java语言的核心,负责解释和执行Java代码。JVM的底层原理包括以下几个方面:
1类加载器:JVM使用类加载器来加载编译好的Java文件,并在运行时将编译后的字节码转换为机器码。
2内存管理:JVM分配和管理内存,包括堆、栈等各种内存结构。
3.执行引擎:JVM的执行引擎可以将Java代码转换为可执行的机器指令。
4JVM指令集:JVM指令集定义了Java语言的许多操作。
5垃圾收集器:JVM垃圾收集器负责回收无用的对象并为新对象腾出空间。
以上就是JVM底层原理的基本内容。掌握这些原理可以更好地理解Java程序的执行机制。想要深入理解JVM底层原理,还必须了解Java编译原理、内存模型、线程调度、类文件格式等技术。