创建并且new一个类的时候,发生了什么?

本文详细介绍了Java中一个类从加载到卸载的完整生命周期,包括加载、连接(验证、准备、解析)、初始化、使用和卸载五个阶段。加载时,Java虚拟机获取类的二进制流并将其转化为运行时数据结构。连接阶段的验证确保字节流的正确性,准备阶段为类变量分配内存并赋予初始值,解析阶段将符号引用转为直接引用。初始化执行类构造器。最后,当不再有引用时,对象会被垃圾回收。
摘要由CSDN通过智能技术生成

Java世界里每天都有大量的类被创建,被使用,被抛弃,那么一个类到底经历了什么?
首先来看看一个类的生命周期,用<<深入理解Java虚拟机>>的图可以清楚的表明,这里写图片描述
可以看出来一个类从出生到死亡一共经历了7个步骤,而这里的验证,准备和解析步骤可以统称为连接,所以可以说一个是4个步骤,而这里需要注意的是这5个步骤并不一定是按照顺序执行的。

一.加载

说到加载就不得不说另外一个名词”类加载”, 这两个定义不能混淆,类加载包括”加载”,”验证”,”准备”,”解析”,”初始化”五个步骤,而”加载”是”类加载”全过程的开始。
那么什么时候开始加载?这个并没有强制规定,Java虚拟机只是规定了类进行初始化的时机,而在进行类的初始化时,初始化之前的步骤需要在这之前进行。
那么加载做了什么?其实主要做了三件事

  1. 获取此类的二进制流
  2. 将字节流的静态存储结构转化为方法区的运行时数据结构
  3. 在内存中生成一个java.lang.Class对象
    其实就是从Java虚拟机之外通过二进制流的方式,引入我们需要的类信息,并且存储到虚拟机的方法区,并且生成了一个Class对象作为访问入口。而对于二进制流的引入来源,并没有太多规范。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值