Java的类加载机制

类加载机制

1以main方法为例,代码会被编译成class文件

第一步:【加载】,加载字节码文件
第二步:【验证】,验证class文件是否合规
第三步:【准备】,给类开辟内存空间,给类变量赋值初始值,比如int变量赋值0,(这部分内存是放在方法区的,1.8以前是用永久代实现,1.8及以后是用元空间)
第四步:【解析】,符号引用替换为直接引用,
第五步:【初始化】,准备阶段已经为类开辟了内存空间,初始化阶段完成赋值操作

2.何为引用,以下是网上的描述:

符号引用:符号引用是以一组符号来描述所引用的目标,符号可以是任何的字面形式的字面量,只要不会出现冲突能够定位到就行。布局和内存无关。
直接引用:是指向目标的指针,偏移量或者能够直接定位的句柄。该引用是和内存中的布局有关的,并且一定加载进来的。

3.何时会去初始化一个类

new一个对象的时候;
包含main方法的类,即JVM启动一个文件名和类名相同的那个类;
初始化一个类的子类时,会去先初始化这个类的父类;
反射,比如class.forname("com.my.test");
访问类的静态方法,静态变量,或者给这个静态变量赋值;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值