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类生命周期经历加载、连接、初始化、使用、卸载的过程,后续用一个例子简单分析类的生命周期。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值