java 类加载器

    xiaoxiao2021-03-25  99

    java类加载

    1、概述

    Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。

          虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。

    2.工作机制

          类装载器就是寻找类的字节码文件,并构造出类在JVM内部表示的对象组件。在Java中,类装载器把一个类装入JVM中,要经过以下步骤:

         (1) 装载:查找和导入Class文件;

         (2) 链接:把类的二进制数据合并到JRE中;

            (a)校验:检查载入Class文件数据的正确性;

            (b)准备:给类的静态变量分配存储空间;

            (c)解析:将符号引用转成直接引用;

         (3) 初始化:对类的静态变量,静态代码块执行初始化操作

     3、类加载器

         (1) Bootstrap ClassLoader : 将存放于<JAVA_HOME>\lib目录中的,或者被-Xbootclasspath参数所指定的路径中的,并且是虚拟机识别的(仅按照文件名识别,如 rt.jar 名字不符合的类库即使放在lib目录中也不会被加载)类库加载到虚拟机内存中。启动类加载器无法被Java程序直接引用;

          经常在debug是看到bootstrap

         (2) Extension ClassLoader : 将<JAVA_HOME>\lib\ext目录下的,或者被java.ext.dirs系统变量所指定的路径中的所有类库加载。开发者可以直接使用扩展类加载器。

         (3) Application ClassLoader : 负责加载用户类路径(ClassPath)上所指定的类库,开发者可直接使用。

    转载请注明原文地址: https://ju.6miu.com/read-12317.html

    最新回复(0)