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

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

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

加载

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

链接

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

初始化

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容