一、类记载过程
1、通过类的全限定名获取存储该类的class文件
2、解析成运行时数据,即instanceKlass实例,存放到方法区
3、在堆区生成该类的class对象,即instanceMirrorKlass实例
二、将.class文件解析成什么?类的元信息在JVM中如何存储
加载成Klass,Klass分为InstanceKlass和ArrayKlass
InstanceKlass
Java类 (非数组)
InstanceMirrorKlass(镜像类)
Class对象(堆区)
InstanceRefKlass
引用
InstanceClassLoaderKlass
ArrayKlass
TypeArrayKlass:描述java中基本数据类型的数据结构
ObjectArrayKlass: 描述java中引用类型的数据结构
三、Java中的数组
1、静态数据类型 JVM中内置的八种数据类型
2、动态数据类型 运行时动态生成的
如何证明
newarray
创建一个制定原始类型(如int,float,char)的数组,并将其引用值压入栈顶
TypeArrayKlass: 基本类型的数组在JVM中的存在形式
anewarray
创建一个引用型(如类,接口,数组)的数组,并将其引用值压入栈顶
ObjArrayKlass: 引用类型的数组在JVM中的存在形式
四、何时加载
1、 new getstatic, putstatic, invokestatic
2、 反射
3、 初始化一个类的子类会去加载其父类
4、 启动类(main函数所在类)
5、 当使用idk.7动志语言支持时