java类的生命周期

java类的生命周期

浪子不回头ぞ 提交于 2019-11-30 19:19:34
首先来了解一下jvm(java虚拟机)中的几个比较重要的内存区域,这几个区域在java类的生命周期中扮演着比较重要的角色: 方法区: 在java的虚拟机中有一块专门用来存放已经加载的类信息、常量、静态变量以及方法代码的内存区域,叫做方法区。 常量池: 常量池是方法区的一部分,主要用来存放常量和类中的符号引用等信息。 堆区: 用于存放类的对象实例。 栈区: 也叫java虚拟机栈,是由一个一个的栈帧组成的后进先出的栈式结构,栈桢中存放方法运行时产生的局部变量、方法出口等信息。当调用一个方法时,虚拟机栈中就会创建一个栈帧存放这些数据,当方法调用完成时,栈帧消失,如果方法中调用了其他方法,则继续在栈顶创建新的栈桢。 除了以上四个内存区域之外,jvm中的运行时内存区域还包括 本地方法栈 和 程序计数器 ,这两个区域与java类的生命周期关系不是很大,在这里就不说了,感兴趣的朋友可以自己百度一下。 类的生命周期 当我们编写一个java的源文件后,经过编译会生成一个后缀名为class的文件,这种文件叫做字节码文件,只有这种字节码文件才能够在java虚拟机中运行,java类的生命周期就是指一个class文件从加载到卸载的全过程。 一个java类的完整的生命周期会经历 加载、连接、初始化、使用、和卸载 五个阶段,当然也有在加载或者连接之后没有被初始化就直接被使用的情况,如图所示: