java - 什么是克拉斯和克拉斯克拉斯

标签 java jvm jvm-hotspot permgen

JVM热点实现中的Klass & KlassKlass是什么?

据我了解 Presenting the Perm Generation , Klass 是 Java 类的内部表示(比如 A),它将包含有关类结构的基本信息,包括字节码。它将作为对象本身存储。 A 类的每个对象都有一个指针,指向 PermGen 中存在的内部表示 Klass

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

另外,一个KlassKlass的 Klass指针指向自己,我也没看懂。

最佳答案

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

我们以下面的代码为例:

public class Parent
{
    ...
}

这里:

  • new Parent()Parent 的对象类。
  • (new Parent()).getClass()Klass的 parent 。此对象的引用类型为 java.lang.Class<Parent> .这将存储有关 Parent 的信息的注解、构造函数、字段、方法、继承(父类(super class)、接口(interface))等
  • KlassKlass 将是 (new Parent()).getClass().getClass() .此对象的引用类型为 java.lang.Class<java.lang.Class> .这定义了关于 java.lang.Class 的信息。的注解、构造函数、字段、方法、它的继承(父类(super class)、接口(interface))等。

理论上,这条链可以继续,但 KlassKlassKlass 与 KlassKlass 相同。

简而言之,KlassKlass 意味着您将拥有一个 java.lang.Class定义 java.lang.Class 行为的对象自己。

希望对你有帮助

关于java - 什么是克拉斯和克拉斯克拉斯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16721021/

相关文章:

java - 我如何从堆转储中知道一个 Java 对象是在 tenure 空间还是 eden 空间

java - HotSpot JVM 的 -server 选项有什么作用?

java - Selenium RC 和 Internet Explorer

java - 在 Java 的双重算术中得到错误的答案

debugging - RejectedExecutionException和Clojure并发

java - 如何检测 Mac OsX 10.7 上是否下载了 JavaVM

java - Math.pow 在重复调用时产生不同的结果

java - OSGi 如何解决将 bundle 定义的类转换为 rt.jar 定义的类的任务?

java - NetBeans Java 代码格式化程序 : logical operators on new line

spring-boot - 当我点击 “Execute”按钮时更改Swagger UI请求URL