类的加载过程

一个类从加载到使用,一般会经历:加载——》验证——》准备——》解析——》初始化——》使用——》卸载

加载做的事情

根据类的全限定名获取其定义的二进制流文件——》将流代表的静态存储结构转化为方法区运行时的数据结构——》在队生成一个这个类的Class对象,作为方法区的入口。

加载涉及到类加载器:BootStrap类加载器-》Extension类加载器-》Application类加载器-》自定义类加载器

验证做的事情

文件格式的验证(字节流文件是否符合class规范)——》元数据验证(字节码的描述信息是否符合java规范)——》字节码的验证(分析数据流和控制流,确保被校验类的方法不危害虚拟机)——》符号引用验证(类自身以外的(如常量池的符号引用)信息进行匹配校验)

准备做的事情

为类变量(static修饰)分配内存并设置类变量的初始值,这些内存都分配在方法区(元数据)中。基本类型赋值为初始值(如int 为0),引用类型的赋值为null。final修饰的变量直接赋值为真实的值。

解析做的事情

将常量池中的符号引用替换为直接引用。主要为:类或接口解析、类方法解析、字段解析、接口方法解析。

初始化做的事情

为static修饰的类变量赋值为真实值,加载static修饰的代码块,加载构造函数,父类初始化等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值