java类的生命周期

Java类的生命周期指的是从类被加载到JVM开始,直到被卸载的整个过程。这个周期大致可以分为以下几个阶段:

1. **加载(Loading)**:

  - 类的二进制数据被JVM的类加载器加载。

2. **验证(Verification)**:

  - 验证加载的类信息是否符合JVM规范。

3. **准备(Preparation)**:

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

4. **解析(Resolution)**:

  - 将类的二进制数据中的符号引用转换为直接引用。

5. **初始化(Initialization)**:

  - 执行类构造器`<clinit>()`方法,进行静态变量的赋值和静态代码块的执行。

6. **使用(Using)**:

  - 类被加载后,可以被应用程序创建实例,或反射等方式使用。

7. **卸载(Unloading)**:

  - 类在没有引用指向它,且满足垃圾回收条件时,将被卸载。卸载前的阶段,JVM会调用该类的垃圾收集器的卸载钩子(如果有的话)。

类加载过程是Java生命周期的一部分,但不是全部。以下是类生命周期中涉及的类加载器和垃圾回收器:

- **类加载器(ClassLoader)**:

  - 负责加载类,可以是系统提供的类加载器,也可以是用户自定义的类加载器。

- **垃圾回收器(Garbage Collector, GC)**:

  - 负责卸载不再使用的类。一个类在没有静态或非静态的引用时,可能会被垃圾回收器卸载。

类卸载的条件通常包括:

- 该类的实例已经被GC回收。

- 该类没有在其他地方被引用。

- 如果有类卸载钩子,需要执行完毕。

值得注意的是,并非所有JVM都支持类卸载,某些JVM可能出于性能或其他原因,选择不卸载任何类。此外,即使类被卸载,其静态变量的值也会丢失,因为静态变量存储在JVM的方法区(或元空间)中,而方法区不属于堆内存,不受垃圾回收器管理。

总的来说,Java类的生命周期包括加载、验证、准备、解析、初始化、使用和卸载等阶段,涉及类加载器和垃圾回收器的协同工作。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵哥代码客栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值