赞
踩
JVM中类的装载由类的加载器和它的子类来实现。Java中类加载器负责在运行时查找和装入类文件中的类。由于Java的跨平台性,经过编译的 Java源程序并不是一个可执行程序,而是一个或多个类文件。一般来说, Java 的类加载过程分为三个主要步骤:加载,连接,初始化,
类的加载是指把类的字节码文件数据读入到内存中,通常是创建一个字节流读入字节码文件,然后在堆中产生与所加载类对应的Class对象。字节码数据源可以是 jar 文件、class 文件、网络数据源等。
把原始的类定义信息平滑地转入 JVM 运行的过程中,可以细分成三个步骤:
验证:目的是确保Class文件的字节流中包含的信息符合JVM约束要求。验证阶段会完成的检验动作:
准备:为静态变量分配内存并设置默认初始值。
(PS: 1.进行内存分配仅包括类变量,而不包括实例变量; 2.初始值一般是数据类型的零值)
解析:在这一步会将常量池中的符号引用替换为直接引用。解析主要针对类或接口,方法、字段等进行解析。
这一步才真正去执行类中编写的程序代码,对类进行初始化,包括:
1.如果类存在直接父类且未初始化,那么就先初始化父类;
2.如果类中存在初始化语句,则依次执行这些初始化语句。(类变量赋值动作及静态代码块初始化)
参考:《深入理解Java虚拟机》第3版 周志明
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。