我搜索了很多,但我找不到答案的地方做java.lang.Class
类的对象驻留-它是堆或元空间/PermGen。我自己的理解是,java.lang.Class
的对象表示类元数据,因此它们应该驻留在Metaspace(或java8之前的PermGen)上。
谁能确认一下,我需要一些明确提到这一点的官方文件。
IMHO,java.lang.Class
类的对象不能视为类元数据。类元数据只是JVM对Java类的内部表示-基本上当JVM加载.class
文件时,它不会存储.class
文件中存在的所有字节码,而是创建一个内部数据结构,该数据结构持有.class
文件所需的一切,并存储在Metaspace或PermGen中。
因此,根据我的知识,我会说java.lang.Class
类的对象将驻留在堆上,java.lang.Class
类的类元数据将驻留在Metaspace或PermGen上。但是,我不能提供关于我的声明的第一部分的任何官方文件,第二部分的官方文件可以在这里阅读。