十OOP-Klass模型

Posted lay2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十OOP-Klass模型相关的知识,希望对你有一定的参考价值。

我们说的实例和类通常是语法层面上的,那么JVM在内存中还是需要一种存在形式:OOP-Klass模型。

简单来说,对象占据了内存,类也占据了内存,他们都需要一种在内存空间的表现形式

1、对象 -> JVM中的对象实例;

2、类 -> JVM中的类实例;

OOP:对象内存布局如下:

技术分享图片

Mark Word:主要用于存储对象运行时数据,比如:GC分代年龄;

元数据指针:指向对象对应的类;

实例数据:存储字段信息等,包含超类的信息(所以继承机制事实上是拷贝了超类的数据

 

Klass则是class在JVM中的对等体。

OOP和Klass是相互对立却又相互联系的模块,那么我们可以想一下,Java的反射机制中是如何通过一个对象获取其类型的呢?

1、首先我们栈中有一个对象的引用;

2、这个引用指向了堆区内存对象;

3、然后通过对象的元数据指针指向了方法区中的类型;

以上是关于十OOP-Klass模型的主要内容,如果未能解决你的问题,请参考以下文章

JVM中如何存储对象和类

JVM中如何存储对象和类

Java虚拟机--对象模型

Java学习之路

java知识点

程序员的自我修养