类的生命周期

参考:http://www.2cto.com/kf/201204/129386.html
1 须知
   当我们编写一个java的源文件后,经过编译会生成一个后缀名为class的文件,这种文件叫做字节码文件,只有这种字节码文件才能够在java虚拟机中运行。

2 定义
   java类的生命周期就是指一个class文件从加载到卸载的全过程。

3过程
   一个java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段,当然也有在加载或者连接之后没有被初始化就直接被使用的情况,如图所示:
这里写图片描述

4 五个阶段
(1)加载
  定义:找到需要加载的类并把类的信息加载到jvm的方法区中,然后在堆区中实例化一个java.lang.Class对象,作为方法区中这个类的信息的入口。
  方式:一种是根据类的全路径名找到相应的class文件,然后从class文件中读取问价内容;另一种是从jar文件中读取。
  加载时机:不同虚拟机的做法不同。有的是当jvm“预期”到一个类将要被使用时,就会在使用它之前对这个类进行加载。比如说出现了一个类的名字;有的是真正需要用的时候才会去加载它。hotspot就是采用的后者。
  注意:加载和连接可能是交叉运行。但是连接阶段总是在加载阶段完成之后完成。
  
(2)连接
  定义:这个阶段的主要任务就是做一些加载后的验证工作以及一些初始化前的准备工作,可以细分为三个步骤:验证、准备和解析
  校验:一般用来确认此二进制文件是否适合当前的JVM(版本),
  准备:为静态成员分配内存空间,。并设置默认值
  解析:转换常量池中的代码作为直接引用的过程,直到所有的符号引用都可以被运行程序使用(建立完整的对应关系)
  
(3)初始化
  连接阶段完成之后会根据使用的情况(直接引用还是被动引用)来选择是否对类进行初始化。如果一个类被直接引用,就会触发类的初始化。
  直接引用有:
    通过new关键字实例化对象、读取或设置类的静态变量、调用类的静态方法;
    通过反射方式执行前面的三种行为;
    初始化子类的时候,会触发父类的初始化;
    作为程序入口直接运行时(也就是直接调用main方法)。
  被动引用:除了主动引用,其他使用类的方式。
  
(4)使用
  使用阶段包括主动引用和被动引用,主动引用会引起类的初始化,而被动引用不会引起类的初始化。
  
(5)卸载
  以下三种条件全部满足,类将被卸载:
    该类所有的实例都已经被回收,也就是java堆中不存在该类的任何实例。
    加载该类的ClassLoader已经被回收。
    该类对应的java.lang.Class对象没有任何地方被引用,无法在任何地方通过反射访问该类的方法。
    
  类的卸载过程其实就是在方法区中清空类信息,java类的整个生命周期就结束了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的对象生命周期是指对象从创建到销毁的整个过程。对象的生命周期包括以下几个阶段: 1. 创建阶段:通过关键字`new`创建对象,并分配内存空间。在这个阶段,对象的实例变量被赋予默认值,构造方法被调用,对象的状态被初始化。 2. 使用阶段:在对象创建后,可以通过调用对象的方法来使用它。在这个阶段,对象可以执行各种操作,处理数据等。 3. 引用阶段:对象可以被其他变量引用,以便在代码中持续使用。对象可以被多个变量引用,或者作为方法的参数传递给其他方法。 4. 终止阶段:当对象不再被引用时,垃圾回收器会自动回收对象所占用的内存空间。在这个阶段,垃圾回收器会调用对象的`finalize()`方法来清理资源和执行一些必要的操作。 生命周期与对象生命周期有一些不同之处。生命周期是指从加载到卸载的整个过程。生命周期包括以下几个阶段: 1. 加载阶段:当程序需要使用某个时,Java虚拟机会根据的全限定名(Fully Qualified Name)来查找并加载对应的文件。在加载阶段,Java虚拟机会执行一些必要的验证和准备工作。 2. 连接阶段:连接阶段分为验证、准备和解析三个步骤。验证阶段用于确保文件的字节流符合Java虚拟机规范,准备阶段用于为的静态变量分配内存并给其赋予初始值,解析阶段用于将符号引用转换为直接引用。 3. 初始化阶段:在初始化阶段,的静态变量会被赋予程序中指定的值,静态代码块会被执行。如果的初始化涉及到其他,那么这些也会被先进行初始化。 4. 使用阶段:在初始化完成后,可以通过名来访问的静态成员,并可以创建该的对象进行实例操作。 5. 卸载阶段:当不再被使用时,Java虚拟机会卸载该,并释放相关的资源。 总结起来,对象生命周期是指对象从创建到销毁的过程,而生命周期是指从加载到卸载的过程。对象与生命周期密切相关,对象的创建需要依赖的加载和初始化,而对象的销毁可能触发的卸载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值