JVM、JMM、JOM总结对比

JVM:Java virtual machine(java虚拟机)

我们都知道java语言是可以夸系统的,正是使用虚拟机技术,java可以编译成虚拟机可以识别的指令,然后在虚拟机上运行。不同的系统统一遵循java虚拟机规范(https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-1.html)实现对应的虚拟机,当然,不同的厂商实现的java虚拟机也可以不同。

JVM运行时内存区域结构:

 

 除了已上区域外,还有一块儿直接内存,使用NIO时运用比较多

JMM:Java memory modle(java(线程)内存模型)

 

 java内存模型和JVM很容易混淆,不过也可以说java内存模型是隶属于jvm的,因为java内存模型不像jvm那样真是存在的结构,它只是一种规范,描述jvm中多个线程如何相关协调的工作,具体来说就是如果通过共享变量来实现相互可见性。而这其中就涉及到jvm的内存结构。

简单总结下,Java的多线程之间是通过共享内存进行通信的,而由于采用共享内存进行通信,在通信过程中会存在一系列如可见性、原子性、顺序性等问题,而JMM就是围绕着多线程通信以及与其相关的一系列特性而建立的模型。JMM定义了一些语法集,这些语法集映射到Java语言中就是volatile、synchronized等关键字。

 

 详细见解:https://blog.csdn.net/suifeng3051/article/details/52611310

JOM:Java object model(java对象模型)

从字面上理解,java对象模型就是一个java对象(instance)在jvm中是如果组织构成的,包括哪些部分。

HotSpot虚拟机中,设计了一个OOP-Klass Model。OOP(Ordinary Object Pointer)指的是普通对象指针,而Klass用来描述对象实例的具体类型。

 

 详细见解:https://blog.csdn.net/linxdcn/article/details/73287490

 

原文链接:https://blog.csdn.net/dreamholy/article/details/87268322

posted @ 2021-03-25 23:18  蒙恬括  阅读(1679)  评论(0编辑  收藏  举报