码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-06-14 01:12:37      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:序列化   不同   变量   class   连接   nbsp   span   3.4   需要   

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

只有当类处于生命周期时,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虚拟机标明为启动类的子类

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

 

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

标签:序列化   不同   变量   class   连接   nbsp   span   3.4   需要   

原文地址:https://www.cnblogs.com/ssskkk/p/9070068.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!