Java 类加载过程

Java 类加载过程和类加载器的理解

  1. 加载

    .class 字节码文件内容加载到内存中,并将这些静态存储结构转换成方法区的运行时数据结构,然后生成一个代表该类的 java.lang.Class 对象,作为方法区的类数据的访问入口(即引用地址)。所有访问或者使用类数据只能通过这个 Class 对象。这个加载过程需要类加载器(ClassLoader)的参与。

  2. 链接:java 类的二进制代码合并到 JVM 的运行状态之中的过程。

    • 验证:确保加载的类信息是否符合 JVM 的规范。
    • 准备:为类变量(static)分配内存并且设置初始值,这些内存都在方法区中分配。
    • 解析:虚拟机常量池中的符号引用(常量名)替换为直接引用(地址引用)的过程。
  3. 初始化

    • 执行类构造器<clinit>()方法的过程。类构造器<clinit>()方法是由javac编译器自动收集类中的所有类变量的赋值动作和静态代码块中的语句合并产生的。
    • 当初始化一个类的时候,如果其父类没有被初始化,则需要先初始化其父类。
    • 虚拟机会保证一个类的<clinit>()方法在多线程环境中被正确的加锁和同步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值