Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JVM如何维护类数据和堆对象之间的关系?_Java_Linker_Jvm - Fatal编程技术网

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

Java JVM如何维护类数据和堆对象之间的关系?,java,linker,jvm,Java,Linker,Jvm,在加载阶段,JVM创建.class实例和特定于类的其他数据结构 此信息在同一类的多个对象之间共享。 我不明白JVM在哪里存储对对象的引用。 它无法将其保存在方法区域中,因为这是共享的 当执行引擎遇到新对象时,将创建对象并返回引用。 但是类数据和对象引用之间的映射保存在哪里呢? 它在固定池的某个地方吗?如果是,这个池是.class实例的一部分吗 请帮帮我,我看了JVM规范和Artima 这很可能是一个实现细节 JVM负责加载类并跟踪它们。它还负责创建对象,并跟踪相应的内存位置 但请注意:最后,我们

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

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

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


请帮帮我,我看了JVM规范和Artima

这很可能是一个实现细节

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

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


而这些表的存储方式/确切位置很可能不是任何规范的一部分。因此,JVM实现可以自由地以最合理的方式进行

了解每个对象都知道它的类是很重要的,因为它有一个对它的类的引用,但类不知道存在哪些实例


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

java中每个对象都有两个标题:称为mark和klass指针。加载有关该类的所有元数据后,klass指针将指向该特定元数据

你为什么想得这么复杂?当您在对象上创建时,这意味着为对象保留内存,存储对象类型的最自然的位置在哪里?虽然正确且模糊?,这是一个实现细节,但它是一个非常有名的细节。我想添加到某个源的链接将是一个非常好的答案。这根本不能解决问题。OP询问链接在JVM内存中的位置。不是如何从java本身中访问Class对象。@GhostCatsaySrestatemonica我写道,每个对象都有一个对其类的引用。对我来说,这意味着它存储为对象本身的一部分。