Java 什么是Klass&;克拉斯克拉斯
JVM热点实现中的Java 什么是Klass&;克拉斯克拉斯,java,jvm,jvm-hotspot,permgen,Java,Jvm,Jvm Hotspot,Permgen,JVM热点实现中的Klass和KlassKlass是什么 据我从文章中了解,Klass是Java类的内部表示形式(比如a)&它将包含关于类结构的基本信息,包括字节码。它将作为对象本身存储。类A的每个对象都有一个指针,指向PermGen中存在的内部表示形式Klass KlassKlass是Klass类本身的内部表示。为什么需要KlassKlass?它存储了哪些额外的信息 另外,KlassKlass的Klass指针指向自身,我也不明白。永久生成a.k.a permgen是指存储所有类相关信息的位置。
Klass
和KlassKlass
是什么
据我从文章中了解,Klass
是Java类的内部表示形式(比如a
)&它将包含关于类结构的基本信息,包括字节码。它将作为对象本身存储。类A的每个对象都有一个指针,指向PermGen中存在的内部表示形式Klass
KlassKlass是Klass
类本身的内部表示。为什么需要KlassKlass
?它存储了哪些额外的信息
另外,KlassKlass的
Klass
指针指向自身,我也不明白。永久生成a.k.a permgen是指存储所有类相关信息的位置。它偶尔被称为方法区
让我们以以下代码为例:
public class Parent
{
...
}
在这里:
是newparent()
类的对象Parent
指父级的(新父级()).getClass()
。此对象的引用类型将是Klass
。这将存储有关父级的注释、构造函数、字段、方法及其继承(超类、接口)等的信息java.lang.Class
- KlassKlass将是
。此对象的引用类型将是(新父级()).getClass().getClass()
。这定义了有关java.lang.Class
的注释、构造函数、字段、方法及其继承(超类、接口)等的信息java.lang.Class
java.lang.Class
对象来定义java.lang.Class
本身的行为
希望这有助于您似乎对HotSpot中的存储管理有了很好的总体了解。为了获得更具体的细节,最好去马的嘴上——在本例中是HotSpot的开发者。是他们对存储管理系统的描述 在我想找出一些代码的情况下,我会尝试找到代码并阅读它。在本例中,我们可以找到KlassKlass类的实现。这似乎并没有在上面添加额外的信息,这很有趣。请注意,
KlassKlass
扩展了Klass
那我们为什么需要它呢?我们可以把一个特定程序的Klass
层次结构画成一棵树,其中一个Klass
描述另一个。每件事都需要一个描述,但我们不能永远这样下去,我们需要找到一个我们用来描述某件事的东西是它自己的地方——这样我们才能停下来
因此,总而言之,KlassKlass
没有做任何比现有的更有用的事情。它需要存在,但它的存在相当乏味