了解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类生命周期经历加载、连接、初始化、使用、卸载的过程,后续用一个例子简单分析类的生命周期。
java-类生命周期(一)
时间: 2024-10-11 23:46:33