在加载阶段,JVM创建.class实例和特定于类的其他数据结构。
此信息在同一类的多个对象之间共享。我不明白JVM在哪里存储对对象的引用。它不能在方法区域中保存它,因为它是共享的。
当执行引擎遇到新时,将创建对象并返回引用。但是,类数据和对象引用之间的映射保存在哪里呢?它在恒定池的某个地方吗?如果是这样的话,这个池是.class实例的一部分吗?
请在这里帮助我--我看过JVM规范和Artima。
发布于 2019-11-19 15:57:50
java中的每个对象都有两个标题:称为mark和klass指针。一旦加载了该类的所有元数据,klass指针就指向该特定元数据。
发布于 2019-11-19 11:57:19
这很可能是实现细节。
JVM负责加载类,并跟踪它们。它还负责创建对象,并跟踪相应的内存位置。
但请注意:最后,我们只是讨论JVM需要保留的各种表。
以及这些表的具体存储方式(很可能)并不是任何规范的一部分。这样JVM实现就可以以最有意义的方式自由地执行了。
发布于 2019-11-19 12:06:11
重要的是要理解每个对象都知道它是类(它对它的类有一个引用),但是类不知道存在哪些实例。
要找到对象的类,可以调用它的getClass()方法。
https://stackoverflow.com/questions/58933483
复制相似问题