在加载阶段,JVM创建了.class实例和特定于这些类的其他数据结构。
此信息在同一类的多个对象之间共享。我不了解JVM在哪里存储对该对象的引用。由于已共享,因此无法将其保存在方法区域中。
当执行引擎遇到new时,将创建对象并返回引用。但是,类数据和对象引用之间的映射在哪里保存?它在恒定池中的某个位置吗?如果是这样,此池是否是.class实例的一部分?
[请在这里帮助我,我经历了JVM规范和Artima。
这很可能是实现细节。
JVM负责加载类,并跟踪它们。它还负责创建对象,并跟踪相应的内存位置。
但是请注意:最后,我们只是在谈论JVM需要保留的各种表。
而且这种表的确切存储方式/存储位置(很可能)不是任何规范的一部分。因此,JVM实现可以自由地以最有意义的方式进行操作。
了解每个对象知道它的类(它有对它的类的引用),但是类不知道存在哪些实例很重要。
要查找对象的类,可以调用它的getClass()
方法。