比较jvm内存结构&java内存模型&java对象模型

学习java过程中有三个概念,分别是jvm内存结构、java内存模型、java对象模型。我们系统的学习完之后,如果不加以总结对比,很容易混淆,相信不光是自己有时候会搞混,好多人应该也同样的困惑,所以这里对这三个知识点做一个总结和对比。希望能帮到大家。

一、jvm内存结构(jvm运行时内存结构)

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机的进程启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。

根据《Java虚拟机规范(Java SE 8)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,JVM运行时内存区域结构如下:

在这里插入图片描述

二、java内存模型

java内存模型中线程间共享变量有:实例域、静态域、数组元素,存储在堆内存中,线程间共享;
线程间私有:局部变量(local variables)、方法定义参数(format method parameters)、异常处理参数(exception handler parameters)。

java内存模型主要是保证<<共享内存部分>>的原子性、可见性、有序性,内存模型定义了共享内存中多线程程序读写宝座行为的规范。

内存模型解决并发问题主要采用两种方式: 限制处理器优化和使用内存屏障。

Java 内存模型的抽象结构:
在这里插入图片描述

三、java对象模型

Java是一种面向对象的语言,而Java对象在JVM中的存储也是有一定的结构的。而这个关于Java对象自身的存储模型称之为Java对象模型。

HotSpot虚拟机中,设计了一个OOP-Klass Model。OOP(Ordinary Object Pointer)指的是普通对象指针,而Klass用来描述对象实例的具体类型。
如下图所示, 就是一个简单的Java对象的OOP-Klass模型,即Java对象模型。
在这里插入图片描述
四、总结
通过对比,我们清楚的了解到了这三个概念的区别:

  • jvm 运行时内存结构 java虚拟机运行时数据区域有关
  • java 内存模型 java并发编程有关,共享内存的可见性、原子性、有序性。
  • java 对象模型 java对象的存储结构,不同对象存储在不同数据区,方法区、堆、栈。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值