Java JVM的方法和堆区域中类引用之间的差异

Java JVM的方法和堆区域中类引用之间的差异,java,architecture,jvm,Java,Architecture,Jvm,前几天我在研究JVM架构,现在我真的很困惑。 网上的文章说JVM只为类的一个实例分配内存,对象可以加载多个实例作为使用。现在JVM也在方法区域加载关于类的信息。 那么,两个类引用(一个在方法区域中,一个在堆中)之间的区别是什么呢。 As method area听起来不错,因为它存储类级别的信息,比如静态变量和方法,但为什么堆中有类的内存?他们是否通过任何方式谈到了由返回的类-字段?如果是这样:class-字段是对一个实例的引用,这个实例(因为它是一个对象)驻留在堆上。是的,类实例在堆上,但这个类

前几天我在研究JVM架构,现在我真的很困惑。 网上的文章说JVM只为类的一个实例分配内存,对象可以加载多个实例作为使用。现在JVM也在方法区域加载关于类的信息。 那么,两个类引用(一个在方法区域中,一个在堆中)之间的区别是什么呢。
As method area听起来不错,因为它存储类级别的信息,比如静态变量和方法,但为什么堆中有类的内存?

他们是否通过任何方式谈到了由返回的
-字段?如果是这样:
class
-字段是对一个实例的引用,这个实例(因为它是一个对象)驻留在堆上。是的,类实例在堆上,但这个类实例在堆中存储了什么类型的数据,以及为什么我们在方法区域中有元数据时需要这些数据?OpenJDK的源代码是。。。好。。。开源。是的,明白了……除了getClass()或其他方法(用于创建对象的forName())之外,还有其他用例吗?我是说这个实例的实际使用?你的问题是在完全不同的术语之间跳跃。首先,您描述类实例的内存,下一句是关于“关于方法区域中的类的信息”,然后,您突然问了一个关于“两个类引用,一个在方法区域,一个在堆中”的问题。你以前从未用过的“课堂参考”这个词是什么意思?在此之前的一切都是简单易懂的“实例内存”和“类信息”,这是两个完全不同的东西,然后,您突然对所谓的“类引用”表示困惑。他们是否以任何方式谈到了由返回的
-字段?如果是这样:
class
-字段是对一个实例的引用,这个实例(因为它是一个对象)驻留在堆上。是的,类实例在堆上,但这个类实例在堆中存储了什么类型的数据,以及为什么我们在方法区域中有元数据时需要这些数据?OpenJDK的源代码是。。。好。。。开源。是的,明白了……除了getClass()或其他方法(用于创建对象的forName())之外,还有其他用例吗?我是说这个实例的实际使用?你的问题是在完全不同的术语之间跳跃。首先,您描述类实例的内存,下一句是关于“关于方法区域中的类的信息”,然后,您突然问了一个关于“两个类引用,一个在方法区域,一个在堆中”的问题。你以前从未用过的“课堂参考”这个词是什么意思?之前的一切都是简单易懂的“实例记忆”和“关于类的信息”,这两个完全不同的东西,然后,你突然对所谓的“类引用”表达了困惑。