首页 > 编程知识 正文

bootstrap类加载器,编写自定义类加载器

时间:2023-05-05 00:55:08 阅读:17487 作者:2009

在我们科学技术和经济水平高速发展的今天,掌握新技术对所有有志青年都非常重要。 今天主要用示意图介绍java的主要技术强化——类加载器及其结构。

首先,我将简要说明什么是类加载器。 从名称中可以看到,类加载器用于将Class文件加载到JVM中,以便在程序中使用。 java的所有类加载都是由类加载器完成的。

接下来,我将介绍如何创建类加载器。 当java运行class文件时,java可执行文件会查找安装JRE的目录,然后查找jvm.dll (默认情况下安装在可用的心跳客户端目录中)

然后启动JVM进行初始化工作,然后生成Bootstrap Loader,Bootstrap Loader加载扩展

加载器和应用程序加载器。 Bootstrap Loader是扩展加载器的父加载器。 扩展加载器是应用程序

加载器的父加载器。

介绍java内置的ClassLoader :

第一个是引导类加载器。 它的实现依赖于底层操作系统,是用c编写的,不是由ClassLoader类继承的。 根加载器从由系统属性sun.boot.class.path指定的目录中加载类库。 缺省设置为没有父加载器的jre目录的lib目录的class文件。 负责加载虚拟机的核心类库,如java.lang.*。 Object类由根类加载器加载。

第二个是标准扩展类加载器。 父加载器是根类加载器。 用java编写,是ClassLoader的子类。 从java.ext.dirs或JDK安装目录的jrelibext子目录下加载类库。 将用户创建的jar文件放在此目录中时,扩展类加载器会自动加载。

第三个是appclass loader (APP应用程序类路径类加载器)。 父加载器是扩展类加载器。 在用java编写的ClassLoader子类中,从由环境变量classpath或系统属性java.class.path指定的目录中加载类。 这是用户自定义的类加载器的默认父加载器。

接下来,我们来看看类加载器的工作原理。 每个类加载器首先将加载类的任务传递给其parent,如果找不到parent,则由自己负责加载。

因此,加载类时,请按bootstrap loader-extended loader-app class loader的顺序查找类,如果找不到,则放弃NoClassDefFoundError。

用一张图像显示类加载器的树结构。

最后谈谈人类的死亡。 类也被垃圾回收。 类被重用的条件有两个。 如果程序没有对Class对象的显式引用,并且堆中没有这样的对象。

以上主要概述了java类加载器中包含的内容,并在树结构的图像中生动地进行了展示。 想了解更多java的基础,请关注奇q工具网。

请阅读:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。