36

在java中,据说所有的类都由类加载器加载。

所以首先,引导类加载器会加载所有 rt.jar 类。

所以我仍然很困惑,因为 Classloader 也是一个类,所以谁来加载这个 BootStrapClassloader。

请解释。

4

4 回答 4

40

:当 JVM 启动时,会运行一段特殊的机器代码来加载系统类加载器。该机器代码称为Bootstrap / Primordial (或有时 - Null)类加载器。

它根本不是一个 Java 类,就像所有其他类加载器一样。引导类加载器是启动整个类加载过程的平台特定机器指令。

所有的类加载器,除了引导类加载器,都是作为 Java 类实现的。必须加载第一个 Java 类加载器才能启动该过程。加载第一个纯 Java 类加载器是引导类加载器的工作。

引导类加载器还负责加载支持基本 Java 运行时环境 (JRE) 所需的所有代码,包括 java.util 和 java.lang 包中的类。

资料来源:http ://www.theserverside.com/tutorial/Classloaders-Demystified-Understanding-How-Java-Classes-Get-Loaded-in-Web-Applications

于 2015-04-10T13:39:44.997 回答
10

Bootstrap 类加载器,作为一个类加载器,实际上是 JVM 核心的一部分,它是用本机代码编写的。

类加载器可以是对象,它们也需要一个表示。事实上,这也允许创建用户定义的类加载器。

于 2013-08-13T16:21:51.387 回答
5

英语中有句成语,“他自力更生”。靴带是靴子顶部的小把手,当然,这是不可能的。

http://en.wikipedia.org/wiki/Booting

这篇文章解释了引导计算机的过程,它是 bootstrapping 的简称。

每种类型的每个程序都会发生某种情况,某种加载程序会将一些字节复制到内存中的某个位置,并在这些字节中的预定义位置开始执行。

对于 Java,引导加载程序可能是也可能不是 Java 类。(可能有人知道。)但它是某种程序,它将最初的几个类加载到内存中并导致 JVM 开始执行那些加载的 Java 代码。也许它会加载 JVM 代码本身。也许它只是确保一些先前的代码加载了 JVM。也许,它甚至要求 JVM 已经加载并运行。

它只是过程的一部分。

于 2013-08-13T16:25:21.727 回答
1

JDK安装路径:jdk\jre\lib\rt.jar

该位置称为引导类路径。引导类加载器负责从引导类路径加载类。

Bootstrap 类加载器默认在 JVM 中可用。它是用 C 和 C++ 等本地语言实现的。

于 2016-02-21T07:26:48.807 回答