JVM类加载与类的生命周期

2018-01-15  本文已影响0人  barry_di

一.JAVA虚拟机加载Class的过程

1.类加载器

JAVA中类由类加载器(ClassLoader)和它的子类来实现装载,而类加载器(ClassLoader)是一个重要的运行系统组件,它负责在运行时查找和装入类文件中的类。类加载器与JAVA虚拟机之间的传递是通过字节码传递。

2.类的生命周期

Java类从加载到虚拟机内存中到从虚拟机中卸载,它的整个生命周期包括:

(1)加载

将编译后的class文件加载到内存中,然后创建与加载class对应的类对象。此时Class对象还是不完整,所以此时的类还不可用。

(2)连接

这一阶段是主要对Class对象进行验证 , 准备 , 解析。准备主要为静态变量分配内存并设置默认的初始值,而解析主要是将符号引用替换为直接引用。

public class PreparatoryPhase {
     private static int intVariable = 1;
     private static long longVariable; 
}
(3)初始化

初始化阶段主要对类进行初始化包括:
1) 加载类的实例
2) 加载类的静态方法
3) 加载类的静态变量
4)实例化一个对象
2)父类初始化,如果类存在直接的父类并且这个类还没有被初始化,先初始化父类;
3)如果类中存在初始化语句,就依次执行这些初始化语句。

(4)卸载

当类的Class对象不再被引用时,Class对象就会结束生命周期,Class类在方法区内的数据也会被卸载,从而结束Class类的生命周期。

我们开分清楚:Class\Class对象\Class的实例
Class代表的是我们编译后的Class文件,JVM加载的Class文件。而Class对象则是通过JVM加载过程后,

Reference:
http://blog.csdn.net/xupeng874395012/article/details/76424425
http://blog.csdn.net/PacosonSWJTU/article/details/50707346

上一篇下一篇

猜你喜欢

热点阅读