【java_jvm】类加载、类初始化、反射机制

5 篇文章 0 订阅
  • 参考文章

https://www.cnblogs.com/ityouknow/p/5603287.html

  • 类的生命周期
  1. 加载

  2. 连接
    2.1 验证

    四个验证:文件格式、元数据、字节码、符号引用

    2.2 准备

    为类的静态变量分配内存,并初始化为默认值

    2.3 解析

    把类中的符号引用转换为直接引用(将指针指向内存区域,即覆盖默认值)

  3. 初始化
    3.1

    假如类未加载和连接,则执行加载和连接

    3.2

    假如该类的父类还没有被初始化,则执行父类初始化

    3.3

    假如类中有初始化语句,则依次执行初始化语句

  4. 使用

  5. 卸载

  • 类加载的途径

– 从本地系统中直接加载
– 通过网络下载.class文件
– 从zip,jar等归档文件中加载.class文件
–从专有数据库中提取.class文件
– 将Java源文件动态编译为.class文件

  • 类初始化的时机

-new 一个实例
-访问类(接口)中的静态变量
-调用类(接口)的静态方法
-反射 如 Class.forName(HungrySingleton.class.getName());
-初始化某个类的子类,父类会先被初始化
-java虚拟机启动时被标明为启动类的类(Java Test)

  • 总结
    类加载在初始化之前,当使用反射的时候类加载已经完成,类的静态成员变量已经成功赋值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值