小编JVM*_*JVM的帖子

java中的classloader是一个类本身,那么谁将加载classloader类?

Java中的ClassLoader是用于加载Java中的类文件的类。

java.lang.ClassLoader是一个抽象类

在这里,我的问题是,此java.lang.ClassLoader类是否与JVM的类加载器有关(1. Bootstrap类加载器2.扩展类加载器3.系统类加载器)?

还是此java.lang.ClassLoader是可用于创建自定义类加载器的单独类?

类加载器是Java运行时环境的一部分,可将Java类动态加载到Java虚拟机中。它负责查找库,读取内容并加载库中包含的类。启动JVM时,使用了三个类加载器

  1. 引导类加载器

  2. 扩展类加载器

  3. 系统类加载器

Bootstrap类加载器加载核心Java库。它是用本机代码编写的。引导类加载器负责将关键的Java类(如java.lang.Object)和其他运行时代码加载到内存中。运行时类打包在jre / lib / rt.jar文件中。

扩展类加载器将代码加载到扩展目录中。它由ExtClassLoader类实现。

系统类加载器在java.class.path上找到的代码映射到系统类路径变量。它由AppClassLoader类实现。默认情况下,所有用户类均由系统类加载器加载。

Java ClassLoader是分层的,每当引发请求以加载类时,它就会将其委派给其父级,并以此方式在运行时环境中保持唯一性。如果父类加载器找不到该类,则该类加载器本身将尝试加载该类。

因此,这意味着首先系统类加载器会将请求委派给扩展类加载器,而扩展类加载器会将请求委派给Bootstrap类加载器,如果找不到该类,它将搜索类,然后扩展类加载器将搜索类(如果找不到),然后系统类加载器将搜索类如果未找到,则抛出ClassNotFoundException

JVM总是以系统类加载器开始加载类吗?

纠正我,如果我在任何地方错了

java jvm classloader

5
推荐指数
1
解决办法
616
查看次数

标签 统计

classloader ×1

java ×1

jvm ×1