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 @   蒙恬括  阅读(1726)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示