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