java虚拟机是如何加载java类的

2019-03-10  本文已影响0人  泽林呗

java语言类型分为两大类:基本类型和引用类型
引用类型:类、接口、数组类和泛型参数(泛型参数会在编译过程中被擦除)

操作顺序:加载->链接(验证、准备、解析)->初始化

加载

公共父类是启动器加载类
方式是:双亲委派模式
关于自定义类加载器,可以参考一下博客
https://www.cnblogs.com/xrq730/p/4847337.html

链接

验证:保证加载的类满足虚拟机的约束
准备:为被加载类的静态字段分配内存,初始化常量(final)
准备阶段是正式为类变量分配内存并设置类变量初始值的阶段,这些变量所使用的内存都将在方法区中进行分配。这个阶段中有两个容易产生混淆的概念需要强调一下,首先,这时候进行内存分配的仅包括类变量(被static修饰的变量),而不包括实例变量,实例变量将会在对象实例化随着对象一起分配在Java堆中。
解析:解析将符号引用解析为实际引用,如果符号引用指向一个未加载的类,那么解析阶段将触发这个类的加载

初始化

运行<clinit>方法为静态变量赋值

上一篇 下一篇

猜你喜欢

热点阅读