小编Rob*_*ert的帖子

普通对象指针是HotSpot中的指针还是对象结构?

我正在撰写有关Oracle HotSpot和GC内部构件的文章,但对OOP(普通对象指针)的含义感到困惑。

Oracle文档指出的OOP是32或64位指针的堆中的对象数据结构:

“ oop”或Java Hotspot术语中的普通对象指针是指向对象的托管指针。oop通常与本机指针大小相同

它可以被压缩,但这不是问题。

我想找到有关此数据结构的文章,但随后开始产生混乱。

一些文章说OOP实际上是数据结构本身,而不是指针!

在这一点上,其他一些文章似乎是矛盾的,例如在infoq.com上。首先,它声明一个OOP是一个指针:

OOP是C / C ++方面的真正指针-指向Java堆内存储器位置的机器字。

但之后它说:

OOP由标头的两个机器字组成,分别称为Mark和Klass字,后跟该实例的成员字段。

那么指针由标头和成员字段组成?那不是真的

最后,我尝试查看Oracle JDK和OpenJDK HotSpot源代码的源代码(因为Oracle HotSpot不是开源的)。但是基于此看来,OOP确实是对象数据结构。但是在这种情况下,指针是什么?

所以问题是:HotSpot JVM中的OOP什么?

java pointers jvm hotspot

4
推荐指数
1
解决办法
861
查看次数

标签 统计

hotspot ×1

java ×1

jvm ×1

pointers ×1