Java类加载简介概括

本文详细介绍了Java类的加载过程,包括加载、验证、准备、解析和初始化五个阶段,强调了初始化阶段的触发条件,如new操作、静态字段访问、静态方法调用等。此外,还提及了动态绑定和接口的初始化规则,揭示了Java语言的运行时特性和灵活性。
摘要由CSDN通过智能技术生成

类加载的时机

一个类从被加载到虚拟机内存加载开始到卸载出内存为止,整个声明周期将经历
加载 验证 准备 解析 初始化 使用 和卸载
其中验证 准备 解析三个部分统称为连接

请添加图片描述

加载 验证 准备 初始化 卸载 五个阶段的顺序是确定的
类加载必须按照这个五个进行

解析

情况就不一定在某些情况下可以在初始化之后在开始 目的:为了支持Java语言的运行时绑定特性 动态绑定或者晚期绑定

初始化

1、遇到nnew getstati putstatic 或者invokestatic这四个字节码指令的时候 如果类型没有进行过初始化 则需要先触发其初始化阶段
(1)、使用new关键字实例化对象的时候
(2)、读取或设置一个类型的静态字段( 被final 修饰 已在编译期 把结果放入常量字节段除外)
(3)、调用一个类型的静态方法的时候
2、使用java.lang.reflect 包的方法对类型进行反射调用的时候 如果类型没有进行初始化 则需要先触发其初始化
3、当初始化类的时候如果发现其父类没有进行过初始化 则需要先触发其父类的初始化
4、当虚拟机启动时 用户需要指定的一个要执行的主类(包含main()方法的那个类) 虚拟机会先初始化这个主类
5、当jdk7 新加入的动态语言支持如果一个java.lang.invoke.MethodHandle 实例最后的解析结果为
请添加图片描述
6、当一个接口定义了jdk8新加入的默认方法被default关键字修饰的接口方法时 如果这个接口的实现类发生了初始化 那该接口要在其之前被初始化

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值