类的加载classload

Posted yxth

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类的加载classload相关的知识,希望对你有一定的参考价值。

在Java中最重要的可以说就是类的加载了。不论我们编写的功能多么复杂,或是多么简单,永远逃离不开的,就是将这个类从class文件加载到JVM中来。

 

首先我们要了解一下类的加载过程,包括:加载、连接(验证、准备、解析)、初始化、使用、卸载。

加载:将根据类的全限定名找到对应的Class文件,将它加载进JVM中,并生成Class对象保存在堆中。

连接:

  验证:检查加载进来的类信息是否满足我们JVM的规范。

  准备:对类中的静态变量分配内存空间,并赋予原始值。对常量直接赋予指定的值。

  解析:将类中的符号引用转变为直接引用。

初始化:为类中的静态变量赋值,执行静态代码块。

 

下面我们用一个类来验证一下:

public class Main7 {

    private final int z = 6;
    private final static int k = 1;
    private static int i = 5;
    private int j = 2;

    static {
        i = 10;
    }

    {
        i = 11;
        j=3;
    }

    public static void main(String[] args) {

    }
}

如上,我们定义一个Main7类,并对类中的每一步都打上断点,如下:

 

以上是关于类的加载classload的主要内容,如果未能解决你的问题,请参考以下文章

类的加载器 ClassLoader

JVM16_类的概述分类ClassLoader源码分析自定义类的加载器双亲委派机制沙箱安全机制

类的加载classload

ClassLoader类的原理

java 自定义类的加载器

java反射中,Class.forName 和 ClassLoader 加载类的区别