详解Java类的生命周期
上一篇 /
下一篇 2012-05-08 09:48:35
/ 个人分类:Java
引言 j
Z&RZxsm0 最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜
了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前国内java方面的教材大多只是告诉你“怎样做”,但至于“为什么这样做”却
不多说,所以造成大家在基础和原理方面的知识比较匮乏,所以笔者今天就斗胆来讲一下这个问题,权当抛砖引玉,希望对在这个问题上有疑惑的朋友有所帮助,文
中有说的不对的地方,也希望各路高手前来指正。51Testing软件测试网Q'H$_.{P}2X4O
)Y3L!?8v%p0 首先来了解一下jvm(java虚拟机)中的几个比较重要的内存区域,这几个区域在java类的生命周期中扮演着比较重要的角色:
BaR`l|P6eR[051Testing软件测试网z6R!v?G`:E ● 方法区:在java的虚拟机中有一块专门用来存放已经加载的类信息、常量、静态变量以及方法代码的内存区域,叫做方法区。
'Z-t!Y J)~~051Testing软件测试网!Uw
\ ][{hJ ● 常量池:常量池是方法区的一部分,主要用来存放常量和类中的符号引用等信息。
n
ts}+g7D t051Testing软件测试网a)s*jGuW
d&dL ● 堆区:用于存放类的对象实例。51Testing软件测试网c4@&MG"SL^@
i/K+x\E0za0
●
栈区:也叫java虚拟机栈,是由一个一个的栈帧组成的后进先出的栈式结构,栈桢中存放方法运行时产生的局部变量、方法出口等信息。当调用一个方法时,虚
拟机栈中就会创建一个栈帧存放这些数据,当方法调用完成时,栈帧消失,如果方法中调用了其他方法,则继续在栈顶创建新的栈桢。51Testing软件测试网o7EQet
51Testing软件测试网5ZzE6b_*P'_U 除了以上四个内存区域之外,jvm中的运行时内存区域还包括本地方法栈和程序计数器,这两个区域与java类的生命周期关系不是很大,在这里就不说了,感兴趣的朋友可以自己百度一下。
/Smw?(M2l051Testing软件测试网KS].[c#x`,x 类的生命周期