JVM底层类加载

2020-09-07  本文已影响0人  我有清风有烈酒

Klass模型

Java中的每个类,在JVM中都有对应的Klass类实例与之对应,储存类的元信息如:常量池、属性信息、方法信息……

Class和Klass的区别:
Class:就是Java类(Java代码);
Klass:Java类在JVM中的存在形式(C++代码)。

Klass类有哪些

上面说到InstanceKlass是非数组的Java类在jvm中对应的类,那数组类在JVM中对应的是什么呢?

ArrayKlass

数组类Java类,在JVM中以ArrayKlass的形式存在的,存储数组类的元数据。

Java中的数组:
是动态数据类型:运行时动态生成的。

如何证明数组是动态生成的:

通过查看字节码文件:

TypeArrayKlass:基本数据类型的数组在JVM中的表现形式;
ObjArrayKlass:引用类型的数组在JVM中的表现形式。


类的加载过程

类的加载过程

需要注意的是,在准备阶段赋初始值分两种情况:

上一篇下一篇

猜你喜欢

热点阅读