什么是Klass&KlassKlass

Viv*_*vek 23 java jvm permgen jvm-hotspot

什么是KlassKlassKlass在JVM中执行热点?

据我在文章介绍Perm生成中所理解的,Klass是Java类的内部表示(比如说A),它将保存有关类结构的基本信息,包括字节码.它将作为对象本身存储.A类的每个对象都有一个指向KlassPermGen中内部表示的指针

KlassKlass是Klass类本身的内部表示.为什么KlassKlass需要?它存储了哪些额外信息?

此外,KlassKlass's Klass指针指向自身,我也不理解它.

Chr*_*ris 25

Permanent Generation aka permgen是指存储所有类相关信息的地方.它有时被称为方法区域.

让我们举一个例子来说明以下代码:

public class Parent
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

这里:

  • new Parent()是一个Parent阶级的对象.
  • (new Parent()).getClass()是指Klass父母.该对象的引用类型为java.lang.Class<Parent>.这将存储有关Parent注释,构造函数,字段,方法,其继承(超类,接口)等的信息
  • KlassKlass会(new Parent()).getClass().getClass().该对象的引用类型为java.lang.Class<java.lang.Class>.这定义了有关java.lang.Class注释,构造函数,字段,方法,其继承(超类,接口)等的信息.

从理论上讲,这个链可以继续,但KlassKlassKlass与KlassKlass相同.

Inshort,KlassKlass意味着您将拥有一个java.lang.Class定义其java.lang.Class自身行为的对象.

希望这可以帮助