美文网首页
浅析jvm与jmm模型结构与关系

浅析jvm与jmm模型结构与关系

作者: 西华子 | 来源:发表于2018-06-17 00:11 被阅读0次

java内存模型(以下简称jmm)和java虚拟机模型(以下简称jvm)之间的关系,下面将详细讲述。

一 jvm结构

jvm的内部结构如下图所示,这张图很清楚形象的描绘了整个JVM的内部结构,以及各个部分之间的交互和作用。

image

1 Class Loader(类加载器)就是将Class文件加载到内存,再说的详细一点就是,把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是类加载器的作用。

2 Run Data Area(运行时数据区) 就是我们常说的JVM管理的内存了,也是我们这里主要讨论的部分。运行数据区是整个JVM的重点。我们所有写的程序都被加载到这里,之后才开始运行。这部分也是我们这里将要讨论的重点。

3 Execution engine(执行引擎) 是Java虚拟机最核心的组成部分之一。执行引擎用于执行指令,不同的java虚拟机内部实现中,执行引擎在执行Java代码的时候可能有解释执行(解释器执行)和编译执行(通过即时编译器产生本地代码执行,例如BEA JRockit),也有可能两者兼备。任何JVM specification实现(JDK)的核心都是Execution engine,不同的JDK例如Sun 的JDK 和IBM的JDK好坏主要就取决于他们各自实现的Execution engine的好坏。

4 Native interface 与native libraries交互,是其它编程语言交互的接口。当调用native方法的时候,就进入了一个全新的并且不再受虚拟机限制的世界,所以也很容易出现JVM无法控制的native heap OutOfMemory。

二 Run Data Area(运行时数据区)

三 jmm

Java内存模型(Java Memory Model,JMM)JMM主要是为了规定了线程和内存之间的一些关系。根据JMM的设计,系统存在一个主内存(Main Memory),Java中所有变量都储存在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存(Working Memory),工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作都是在工作内存中进行,线程之间无法相互直接访问,变量传递均需要通过主存完成。

image

四 jvm和jmm之间的关系

jmm中的主内存、工作内存与jvm中的Java堆、栈、方法区等并不是同一个层次的内存划分,这两者基本上是没有关系的,如果两者一定要勉强对应起来,那从变量、主内存、工作内存的定义来看,主内存主要对应于Java堆中的对象实例数据部分,而工作内存则对应于虚拟机栈中的部分区域。从更低层次上说,主内存就直接对应于物理硬件的内存,而为了获取更好的运行速度,虚拟机(甚至是硬件系统本身的优化措施)可能会让工作内存优先存储于寄存器和高速缓存中,因为程序运行时主要访问读写的是工作内存。

五 参考资料

深入理解java虚拟机(第二版)

http://www.codeweblog.com/jvm-jmm/

https://segmentfault.com/q/1010000004885908

相关文章

  • 浅析jvm与jmm模型结构与关系

    java内存模型(以下简称jmm)和java虚拟机模型(以下简称jvm)之间的关系,下面将详细讲述。 一 jvm结...

  • volatile

    参考 JVM内存结构 VS Java内存模型 VS Java对象模型三者是不同的概念 JMM JMM JMM与物理...

  • JUC(一)JMM内存模型

    一、简介 JMM((Java Memory Model)是Java内存模型,与JVM内存模型不同,与CPU内存模型...

  • Jvm虚拟机原理分析性能调优

    核心技术①深入字节码底层剖析JVM内存结构②JVM垃圾收集机制与性能调优③深入理解Java内存模型JMM④深入汇编...

  • JVM问题及解答

    常见JVM问题 JVM内存模型,GC机制和原理。注意JVM内存模型与Java内存模型(JMM)不是同一个东西。JV...

  • Java 并发、多线程、锁

    JMM(Java 内存模型) 主内存与工作内存JMM规定JVM有主内存(Main Memory)和工作内存(Wor...

  • java内存结构和java内存模型

    java内存模型:与多线程JMM,就是线程可见性有关java内存结构:JVM虚拟机存储空间 class文件被类加载...

  • java多线程之一——Java内存模型(JMM)

    在讲解之前,先区别两个概念:java内存模型与JVM内存模型。 java内存模型:JMM(Java Memory ...

  • JVM随笔(三)内存模型

    JVM内存模型 JVM内存模型与Java内存模型不是一个东西,很多人经常会搞混掉,JMM是java并发处理时针...

  • 划重点必考-JMM-内存模型

    JVM的内存模型(JMM) JVM中定义了自己的内存结构模型。JVM作为java程序一次编写到处运行的载体,为了兼...

网友评论

      本文标题:浅析jvm与jmm模型结构与关系

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