首页 > 代码库 > java-类生命周期(一)

java-类生命周期(一)

了解java底层知识,有利于提升对java的理解,提升程序性能,减少内存消耗。

详细介绍类生命周期前,简单了解下JVM虚拟机

java虚拟机:简称JVM(Java Virtual Machine),软件模拟硬件,包含处理器、寄存器、堆栈及指令系统,内存区域介绍见java-内存管理。

万物皆有生命周期,类的生命如下图所示



(一)加载

java文件编译成.class文件,JVM将.class文件中二进制数据读入内存,放于方法区,在堆中创建Class对象


(二)连接

1.验证:验证该类是否合法,防止恶意编写的.class文件,检测文件是否符合字节码格式

2.准备:为类的静态变量分配内存,并设置初始值

3.解析:将接口名、字段名、方法名等解析成内存地址,方便调用


(三)初始化

类引用分成直接引用和间接引用,直接引用才会触发类初始化。

直接引用的情况:

1.new出实例对象、访问或设置静态变量、调用类静态方法

2.反射(如Class.forName(“com.peter.demo.Test”))

3.初始化子类,触发父类初始化

4.启动类入口(如Main方法)

其他情况皆是间接引用,如引用类常量(static final)


(四)卸载

类的卸载大于实例对象的生命周期

java gc采用根搜索算法进行内存管理,当对象为unreachable的时候,实例对象将被清除;而类卸载还需要满足,加载该类的ClassLoader已被回收、Class对象没任何引用也无反射,才会被卸载。


(五)学习概要

一个完整的java类生命周期经历加载、连接、初始化、使用、卸载的过程,后续用一个例子简单分析类的生命周期。