类加载器的分类
类加载器的任务就是把 java字节码文件内容 加载到 JVM 中去
分类
类加载器一般分为两类:
-
启动类加载器: 这个类加载器使用C++实现 是虚拟机自身的一部分,启动类加载器加载的内容 包括java.lang.Object、java.lang.String等在内的Java核心类库。
这些类库是构建Java应用程序的基础,它们通常位于JRE(Java Runtime Environment)的lib目录下。 -
虚拟机外部 由java语音实现的,这些类加载器全部继承 抽象类
java.lang.ClassLoader
比如拓展类加载器,应用程序类加载器(也叫系统类加载器 它负责加载用户类路径上面所指定的类库)
我们的java程序 基本都是由这几类 类加载器相互配合进行加载的,你加载你负责的部分 我加载我的。
但是 不管是哪个类加载器 它们的加载过程的基本流程是相似的。加载过程通常包括三个阶段:加载、连接和初始化。
最后把java文件字节码 加载到JVM的 方法区中。
从classloader继承而来的 类加载器
启动类加载器是c++写的 我们无法改动 也很难触及核心,我们重点来看看从classloader继承而来的 类加载器
Extension ClassLoader(扩展类加载器): 该类加载器是用来加载Java平台的扩展库,这些库位于JRE的lib/ext目录下。
Application ClassLoader(应用程序类加载器): 也称为系统类加载器,它负责加载应用程序类路径上的类。应用程序类路径是由用户通过命令行或者其他方式指定的,包括应用程序的JAR文件、类文件目录等。
对于业务代码,通常是由应用程序类加载器加载的。这意味着你的项目中的类,包括你自己编写的业务代码,都会被应用程序类加载器加载到JVM中。当你运行一个Java应用程序时,JVM会创建一个应用程序类加载器,并使用它来加载你的业务代码。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!