欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

关于类的生命周期,生命周期

来源: javaer 分享于  点击 20619 次 点评:157

关于类的生命周期,生命周期


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

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

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

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

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

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

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

(2)、

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

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

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

使用

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

卸装

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

(3)、对象的生命周期

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

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


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

相关文章

    暂无相关文章
相关栏目:

用户点评