类加载机制

来源:互联网 发布:amd锐龙 知乎 编辑:程序博客网 时间:2024/06/08 06:29

一、ClassLoader(类加载器)的作用:

        1、把class文件加载到 jvm 中;

        2、审查每个类由谁负责加载;

        3、将class字节码重新解析成 jvm 统一要求的对象格式。

 

二、类加载器的种类(java.lang.Class类)

        1、启动类价器:装载核心库

        2、扩展类加载器:加载 JAVA_HOME/lib/ext下的文件(-D java.ext.dirs)

        3、系统类加载器:加载java classpath目录下的类或者jar包

        4、自定义加载器:逻辑由自己实现


三、类加载过程

        1、首先需要将class文件加载进行jvm中,加载过程:

            即双亲委派模型,一个class文件进来之后先传递到最父加载器,若不是自己职责范围内该加载的文件则进行下放,

            其中,jvm如何判断两个class文件是否相同,则需要判断类的全限定名(包名+类名)是否相同,是否由同一个类加载器进行加载。

            机制的好处:

                1)安全性

                2)统一性

        2、 验证:验证.class文件是否符合jvm规范

        3、准备: 为类的静态变量分配内存,并对其始化值默认值( 如:int的默认值为0)

        4、解析: 将虚拟机常量池中的符号引用转换为直接引用

        5、初始化:该过程与4并行执行,会为类的静态变量赋予初始值(比如: int i = 2; 准备阶段将类变量赋值0,现在修正为2)


原创粉丝点击