码迷,mamicode.com
首页 > 编程语言 > 详细

JVM内存结构 VS Java内存模型 VS Java对象模型

时间:2018-07-03 00:17:09      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:www.   小结   规范   自己   mod   参考   傻傻   可见   指针   

前面几篇文章中, 系统的学习了下JVM内存结构、Java内存模型、Java对象模型, 但是发现自己还是对这三者的概念和区别比较模糊, 傻傻分不清楚。所以就有了这篇文章, 本文主要是对这三个技术点再做一个总结和区分, 加深印象。

JVM内存结构

在《Java虚拟机规范(Java SE 8)》中描述了JVM运行时内存区域结构如下:

技术分享图片

也就是说, JVM内存结构由Java虚拟机规范定义, 其描述的是Java程序执行过程中, 由JVM管理的不同的数据区域。

Java内存模型

首先, 我们知道, Java的多线程之间是通过共享内存进行通信的, 而由于采用共享内存进行通信, 在通信过程中会存在一系列如可见性、原子性、顺序性等问题, 而JMM(Java Memory Model)就是围绕着多线程通信以及与其相关的一系列特性而建立的模型。它只是一个抽象的概念。JMM定义了一些语法集, 这些语法集映射到Java语言中就是volatile、synchronized等关键字。

技术分享图片

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对象在虚拟机中的表现形式有关。

参考资料

JVM内存结构 VS Java内存模型 VS Java对象模型

JVM内存结构 VS Java内存模型 VS Java对象模型

标签:www.   小结   规范   自己   mod   参考   傻傻   可见   指针   

原文地址:https://www.cnblogs.com/qingshanli/p/9256387.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!