Java类初始化顺序

 

[引言]

本文主要总结了java类的lifetime。包括从类的加载,linkinitialize,以至对象的实例化和销毁。并结合jvm规范,略作解释。

1.测试用程序:

 

2.程序输出:

 output

[正文]

Java对象的从无到有要经过类的加载,链接,初始化和对象的实例化这几个过程。从总体来说类的生命周期大致将其分为三个phase

类型(类或者接口)的生命周期:从类型的initial entrance到最终退出虚拟机.

1.类生命周期的开始:装载,链接,初始化(幼年)

2.类生命周期的主要时期:对象实例化,终结(成年)

3.生命周期的末期:类的终结和卸载。(晚年)

 

Phase1:class lifetime

Class lifetime = class load + link + initialize

 

1 类之初

Phase1-1Load 3W

1what is Load”?

装载指的是“jvm寻找一个具有特定名称的类或者接口的二进制形式,并使用这个二进制形式构造一个代表该类或者接口的Class对象的过程”。装载过程包括jvm的下列三个动作:

Ø         产生用于表达该类型(类或者接口)的二进制数据流(jvm or complier??)

Ø         Method area,解析该二进制数据流成内部数据结构

Ø         产生表达该类型的java.lang.Class实例。(此处已经有instance生成了!)

java.lang.Class实例是加载步骤的最后产物,作为一个接口,服务于程序(class consumer)和内部数据结构(class representation)之间。为了存取存储于内部数据结构的类型信息,程序调用相关类型的class实例的方法。

2when to load”?

对于何时装载,jvm规范允许jvm设计者弹性实现。

the command line为例:

    java Terminator Hasta la vista Baby!

will start a Java virtual machine by invoking the method main of class Terminator

The initial attempt to execute the method main of class Terminator discovers that the class Terminator is not loaded-that is, the virtual machine does not currently contain a binary representation for this class. The virtual machine then uses a ClassLoader to attempt to find such a binary representation

3who performsload”?

Phase1-2Link 3W

Phase1-3Initialize 3W

 

<<TO BE CONTINUED......>>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值