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

本文详细解析了Java领域的三个核心概念:JVM内存结构、Java内存模型与Java对象模型。通过对这三个概念的深入探讨,帮助读者理解它们之间的区别与联系,并提供实际应用场景,以便更好地掌握Java并发编程及对象存储的知识。

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

参考文档:

https://docs.oracle.com/javas...(Java虚拟机规范(Java SE 8))

《java并发编程的艺术》

《HotSpot实战》

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

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

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

0ecb12975b9783504b17960eea27facf.png

二、java内存模型

java内存模型中线程间共享变量有:实例域、静态域、数组元素,存储在堆内存中,线程间共享;

线程间私有:局部变量(local variables)、方法定义参数(format method parameters)、异常处理参数(exception handler parameters)。

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

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

Java 内存模型的抽象结构:

dad1b3bc93b00877c34de71f5411fe2b.png

三、java对象模型

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

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

如下图所示, 就是一个简单的Java对象的OOP-Klass模型,即Java对象模型。

1a719f7e51f719da32d0dfb021d8ccfd.png

四、总结

通过对比,我们清楚的了解到了这三个概念的区别:

jvm 运行时内存结构 java虚拟机运行时数据区域有关

java 内存模型 java并发编程有关,共享内存的可见性、原子性、有序性。

java 对象模型 java对象的存储结构,不同对象存储在不同数据区,方法区、堆、栈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值