码迷,mamicode.com
首页 > 其他好文 > 详细

关于类的生命周期

时间:2015-03-21 14:08:00      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:

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

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

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

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

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

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

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

(2)、

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

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

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

使用

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

卸装

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

(3)、对象的生命周期

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

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


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

关于类的生命周期

标签:

原文地址:http://blog.csdn.net/mll999888/article/details/44514793

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!