【问题标题】:How is the Java Bootstrap Classloader loaded? [duplicate]Java Bootstrap 类加载器是如何加载的? [复制]
【发布时间】:2013-08-15 08:51:35
【问题描述】:

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

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

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

请解释一下。

【问题讨论】:

标签: java classloader bootstrapping


【解决方案1】:

答案:当 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

【讨论】:

  • 很难判断您是否说所有类加载器都不是 Java 类。也许你说所有的类加载器都是 Java 类。逗号的使用使其模棱两可。 (这是在你的第二段的第一句。)
  • 我的意思是,在 Java 环境中 - 只有 Bootstrap CL 将是非 Java(本机)类加载器;其余的(系统、应用程序、用户定义的 CL 等)是 Java 类加载器......请参阅链接。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    英语中有一个成语,“他靠自己的力量挺身而出”。靴带是靴子顶部的小把手,当然,这是不可能的。

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

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

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

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

    这只是过程的一部分。

    【讨论】:

    • 两分钱:1)感谢提醒,我刚刚投了赞成票。 2)这个答案的前半部分很好。下半场充满了不确定性。我确实添加了 mu 位,但有人认为它们不合适。
    • 如果您正在寻找完整的答案,请阅读下面的答案。 (我不是在吹喇叭,但它有所有可能的答案)
    • @Raúl 我的意思是,在启动 Java 的每个步骤中加载代码的类型并不重要。不用说,在每个操作系统上,它必须是开始运行的本机代码。操作系统仅加载本机代码。它带来了一些小的东西,它装载了更大的东西。每个加载的东西都会重复这个过程,反过来,加载更大的东西直到它全部存在。第一部分越小,每个操作系统需要的本机代码就越少,所有操作系统的通用代码就越多。但加载有多少阶段并不重要。
    • 是的,完全同意 :-)
    【解决方案4】:

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

    此位置称为引导类路径。 Bootstrap 类加载器负责从 bootstrap 类路径中加载类。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多