JAVA类的生命周期,以及类的初始化时机

类的生命周期从类被加载连接初始化开始,到类被卸载结束。

只有当类处于生命周期时,java程序才能使用它,比如 调用类的静态属性和方法、或者创建类的实列

简要介绍

1:加载 

类的加载时指把类的.class文件中的二进制读入到内存中,把它存放在运行时数据区的方法区内,然后在堆区创建一个java.long.Class对象用来封装类在方法区内的数据结构。并且向java程序提供了访问类在方法区内的数据结构接口。

类的加载器并不需要某个类"首次主动使用"时在加载它,java虚拟机规范允许类加载器预料某个类将要被使用时,预先加载它

2:连接

2.1:验证

2.2:准备

2.3:解析

3:初始化 给类的静态变量赋予正确的初始值 

和加载不同,java虚拟机只有程序在首次使用一个类或者接口时才会初始化。

3.1:创建类的实列(new,反射,克隆,序列化)

3.2:调用类的静态方法

3.3:访问类的静态变量(可以看到static变量 在初始化的时,此时未必存在类的实列)

3.4:初始化一个类的子类。也就是说 子类的初始化会先初始化父类(调用父类的构造方法),这也就是Object类为什么会有一个默认的无参构造方法。

3.5:被java虚拟机标明为启动类的子类

补充:类加载的父亲委托机制

猜你喜欢

转载自www.cnblogs.com/ssskkk/p/9070068.html
今日推荐