有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java哪个加载程序负责在JVM中加载自己的类

我读过JVM的概念,有类加载器

  1. 引导类装入器
  2. 扩展类加载器
  3. 应用程序类加载器

我理解这三个概念,但我怀疑谁负责加载自己的类

例如:

导入java。朗*;(引导类装入器)

class MyClass{
     public static void main(String args[]){
     -----------
     ----------------
     }
}

那么这里谁负责加载MyClass


共 (1) 个答案

  1. # 1 楼答案

    通过排除,它不能是第一个或第二个,因为MyClass不是JRE类,也不是JRE扩展

    因此,MyClass由应用程序类加载器加载

    要检查这一点,可以在此类实例上调用getClassLoader()方法:

    public static void main(String args[]) {
        System.out.println(MyClass.class.getClassLoader());
    }
    

    它将输出如下内容:

    sun.misc.Launcher$AppClassLoader@1d16e93

    AppClassLoader作为一个名字是相当有意义的

    你可以在this Oracle blog上找到一些参考信息:

    3. application class loader

    1. Loads classes from application classpath

    ...

    1. This is the loader that loads your Java application's "main" class (class with main method in it).

    In Sun's implementation, this is an instance of sun.misc.Launcher$AppClassLoader (actually it is an inner class of sun.misc.Launcher class).

    这个博客条目很旧,但这一点仍然有效