java学习笔记----java类加载过程

java类加载过程

这里写图片描述

  1. 加载:
    将class文件字节码内容加载到内存中,将静态数据装换成方法区中的运行时数据结构,在堆中生成一个class对象,作为方法区类数据访问的接口。
  2. 链接:
    将java类的二进制代码合并到JVM的运行状态之中的过程
    . 验证:
    确保加载的类信息符合JVM规范,没有安全方面的问题。
    . 准备:
    在方法区中为类变量分配内存并设置变量初始值。
    (赋初值不是初始化,static int a=1;赋初值为0)
    . 解析:
    虚拟机常量池的符号引用改为直引用的过程
  3. 初始化:
    ①初始化阶段是执行类构造器clinit()方法的过程,由编译器自动收集类中的所有变量的赋值动作和static块中的语句合并产生的。
    ②当初始化类时,如果发现父类还没有初始化,则先初始化父类
    ③虚拟机会保证一个类的clinit()方法在多线程中被正确加锁和同步
    ④当访问一个java类的静态域时,只有声明这个域的类才会被初始化
    (比如父类Parent有 static int a =1;调用子类Child.a,不会初始化子类)
    ⑤当访问类常量 static final修饰,是从常量池中拿,不会进行初始化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值