【JVM】-- 类加载

类加载包括加载、验证、准备、解析和初始化5个过程,如加载是找到.class文件并读入内存,初始化执行静态块。类加载不是程序启动就进行,而是在调用时加载。双亲委派模型描述了类加载器如何查找.class文件,从顶层加载器开始,找不到再逐层向下。
摘要由CSDN通过智能技术生成

类加载就是把类的.class文件加载到内存得到类对象的过程

  1. 类加载5大过程

    1. 加载:把对应类的.class文件找到,读文件到内存中。

    2. 验证:.class的格式检查

    3. 准备:为静态变量(final 和static定义的变量)分配内存空间,初始化静态变量为默认值

    4. 解析:把符号引用转换为直接引用,因为这里类的信息已经被加载到内存了,所以这里会把原来通过全限定名引用的对象替换成对象内存的实际地址。

    5. 初始化:执行初始化静态块内容,并且为静态变量进行真正的赋值操作

  2. 类加载的时机

      不是java程序一运行就加载,而是调用了这个类时,才去加载。

    1. 构造类的实例

    2. 调用类的静态属性或静态方法

    3. 调用类的子类

  3. 双亲委派模型

      它指的是在类加载阶段的加载步骤找.class文件的具体过程。

      具体的,主要涉及三个类加载器,当开始找.class文件时,请求依次向上传递,到达顶端后开始找,找不到则向下传递请求,直到最后一层找不到则抛出异常ClassNotFoundException。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值