Java基础之类加载机制

2019-11-29  本文已影响0人  youzhihua

一、类加载过程

Java的类加载过程总共包含三大步,分别为:装载、链接和初始化;需要注意的是,这三个步骤并不是简单的串行,而有可能交叉并行的,下面详细介绍下这几个步骤。

1.1 装载

装载的任务主要有:

1.2 链接

链接可以细分为验证、准备和解析三个步骤。

1.2.1 验证

验证是确保Class文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全,主要包含以下四种验证方式:

虽然验证功能很有必要,但是我们也可以通过设置 -Xverifynone参数来关闭大部分的类验证措施,以缩短虚拟机类加载的时间。

1.2.2 准备

准备阶段是正式为类变量分配内存并设置类变量初始值的阶段,这些内存都将在方法区中分配。

例如 public static int value=10:在此阶段被赋值为0,而public final static int value = 10,在此阶段被赋值为10。

1.2.3 解析

解析阶段是虚拟机将常量池内的符号引用替换为直接引用的过程,解析动作主要针对类或接口、字段、类方法、接口方法、方法类型、方法句柄和调用点限定符7类符号引用进行。

1.3 初始化

初始化,为类的静态变量赋予正确的初始值,JVM负责对类进行初始化,主要对类变量进行初始化。

1.反射(Class.forName)
2.使用new关键字
3.其子类要进行初始化操作
4.操作了该类的静态成员:静态变量使用和赋值以及静态方法的使用

二、类加载器

2.1 类加载器类型

类加载器可以大致划分为以下三类:

2.2双亲委派机制

使用双亲委派机制的原因:

上一篇 下一篇

猜你喜欢

热点阅读