关于类的生命周期

JAVA类的生命周期,java类通过编译为.class文件,是字节码文件,然后放入虚拟机里面。

只有这种字节码文件才能够在java虚拟机中运行,java类的生命周期就是指一个class文件从加载到卸载的全过程。

(1)、关于JVM(java虚拟机):

· 方法区:在java的虚拟机中有一块专门用来存放已经加载的类信息、常量、静态变量以及方法代码的内存区域,叫做方法区。

· 常量池:常量池是方法区的一部分,主要用来存放常量和类中的符号引用等信息。

· 堆区:用于存放类的对象实例。

· 栈区:也叫java虚拟机栈,是由一个一个的栈帧组成的后进先出的栈式结构,栈桢中存放方法运行时产生的局部变量、方法出口等信息。当调用一个方法时,虚拟机栈中就会创建一个栈帧存放这些数据,当方法调用完成时,栈帧消失,如果方法中调用了其他方法,则继续在栈顶创建新的栈桢。

(2)、

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

加载:就是把.class文件加载到JVM中。要注意与类的加载不同意思,类的加载是包括加载、连接和初始化的。

连接:就是把加载到JVM中的文件,通过验证来判断.class的正确性,为初始化前的准备工作。在解析阶段,jvm会将 所有的类或接口名、字段名、方法名转换为具体的内存地址。(概括起来就是验证阶段、准备阶段和解析解的)
初始化:按照顺序自上而下运行类中的变量赋值语句和静态语句,如果有父类,则首先按照顺序运行父类中的变量赋值语句和静态语句。

使用

使用阶段包括主动引用和被动引用,主动饮用会引起类的初始化,而被动引用不会引起类的初始化。

卸装

类的卸载过程其实就是在方法区中清空类信息,java类的整个生命周期就结束了。

(3)、对象的生命周期

   对象开始创建,进行实例化的过程开始于类的初始化之后,也就是类的使用阶段,但是对象的创建、对象的回收、对象的终结只是类的使用阶段的一个小的部分(

使用阶段的主动引用的一种情况);


说明:本文是根据csdn博客上的《类的生命周期》总结而来,并非原创,谢谢~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值