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

问题描述 投票:0回答:2

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

此信息在同一类的多个对象之间共享。我不了解JVM在哪里存储对该对象的引用。由于已共享,因此无法将其保存在方法区域中。

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

[请在这里帮助我,我经历了JVM规范和Artima。

java linker jvm
2个回答
0
投票

这很可能是实现细节。

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

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

而且这种表的确切存储方式/存储位置(很可能)不是任何规范的一部分。因此,JVM实现可以自由地以最有意义的方式进行操作。


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.