首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JVM如何维护类数据和堆对象之间的关系?

JVM如何维护类数据和堆对象之间的关系?
EN

Stack Overflow用户
提问于 2019-11-19 11:51:30
回答 3查看 102关注 0票数 0

在加载阶段,JVM创建.class实例和特定于类的其他数据结构。

此信息在同一类的多个对象之间共享。我不明白JVM在哪里存储对对象的引用。它不能在方法区域中保存它,因为它是共享的。

当执行引擎遇到时,将创建对象并返回引用。但是,类数据和对象引用之间的映射保存在哪里呢?它在恒定池的某个地方吗?如果是这样的话,这个池是.class实例的一部分吗?

请在这里帮助我--我看过JVM规范和Artima。

EN

回答 3

Stack Overflow用户

发布于 2019-11-19 15:57:50

java中的每个对象都有两个标题:称为markklass指针。一旦加载了该类的所有元数据,klass指针就指向该特定元数据。

票数 1
EN

Stack Overflow用户

发布于 2019-11-19 11:57:19

这很可能是实现细节。

JVM负责加载类,并跟踪它们。它还负责创建对象,并跟踪相应的内存位置。

但请注意:最后,我们只是讨论JVM需要保留的各种表。

以及这些表的具体存储方式(很可能)并不是任何规范的一部分。这样JVM实现就可以以最有意义的方式自由地执行了。

票数 0
EN

Stack Overflow用户

发布于 2019-11-19 12:06:11

重要的是要理解每个对象都知道它是类(它对它的类有一个引用),但是类不知道存在哪些实例。

要找到对象的类,可以调用它的getClass()方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58933483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档