类加载分为三个过程:装载、链接、初始化。
1、装载的过程就是将class文件读入内存的过程,并且提取其中的类关键信息,比如:方法、变量等等。
2、链接中存在三个步骤:
a、进行字节码的检查,看是否符合class文件规范;
b、对类中的类变量进行分配空间,附初始值。此处专指基本类型。
c、对类中的引用变量进行分配空间。
3、初始化,现在的初始化才是真正的,将按照语句一句一句执行了。
也就是说,在初始化执行以前所有的类变量以及引用变量都是分配了存储空间的,只是他们的数值是不可信任的,也就是系统默认的数据。
将如下java程序
private static Singleton obj = new Singleton();
public static int counter1 ;
public static int counter2 = 0;
变为:
public static int counter1 ;
public static int counter2 = 0;
private static Singleton obj = new Singleton();
则执行结果则由
obj.counter1=1,obj.counter2=0
变成了
obj.counter1=1,obj.counter2=1.
分享到:
相关推荐
Java源代码被编译成能够被任何JVM加载和执行的类文件。在被JVM加载之前,类文件可能是由网络传输而来。 类文件是独立于底层平台的,所以适用于更多的地方。它们由简洁的JVM字节码组成,这样能轻装上阵。类文件...
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置...
load-on-startup表示Servlet在web应用启动阶段加载,数字代表了启动次序,如果项目使用了springmvc框架,可以调整该数字为2,放到springmvc框架后面启动加载,但实际上Servlet的启动次序并没有太大的关系。...
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或...
它的玩法也非常简单,在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,控制人物不停的移动将...
元字符是正则表达式中一类有特殊意义的字符,用来描述其前导字符(即元字符前面的字符)在被匹配的对象中出现的方式。元字符本身是一个个单一的字符,但是不同或者相同的元字符组合起来可以构成大的元字符。 元...
知档,其中,ID列名默认使用主键名称(若为复合主键则采用次序排首位的主键列名) ,而Oracle环境下的sequence对象名称则为“seq_表名_id”格式的默认名称,请根据 实际情况修改。该配置档用于CmSdk4j-Core框架的ORM...
7. 3 Panorama for Java和Java Analyzer的安装和设置 7. 3. 1 要求 7. 3. 2 如何安装 7. 3. 3 设置 7. 4 Panorama VB的安装和设置 7. 4. 1 系统要求 7. 4. 2 安装 7. 4. 3 启动Panorama VB及选定目标源程序 7...
• sample09.htm 边加载边解析的JavaScript代码 • sample10.htm 先加载后解析的JavaScript代码 • sample11.htm 单行注释语句 • sample12.htm 多行注释语句 • sample13....
§3.5.5 JAVA脚本 81 第6章 性能优化基础知识 82 §5.1 理解ORACLE性能优化 82 §5.1.1 响应时间与吞吐量的折衷 82 §5.1.2 临界资源 83 §5.1.3 过度请求的影响 83 §5.1.4 调整以解决问题 83 §5.2 优化的执行者 ...