我读了JVM的概念,那里有类加载器
我理解这三者的概念,但我怀疑谁负责加载自己的类。
示例:
import java.lang。*;(Bootstrap Class loader)
class MyClass{
public static void main(String args[]){
-----------
----------------
}
}
所以这里谁负责加载 MyClass 这里
答案 0 :(得分:2)
通过消除,它不能是一个或第二个,因为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。应用程序类加载器
- 从应用程序类路径
加载类 醇>...
- 这是加载Java应用程序“main”类的加载器 (带有main方法的类)。
醇>在Sun的实现中,这是一个实例 sun.misc.Launcher $ AppClassLoader(实际上它是一个内部类 sun.misc.Launcher class)。
博客条目已旧,但这一点仍然有效。