java classloader解析,Java ClassLoader深入讲解

当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构:

bootstrap classloader

|

extension classloader

|

system classloader

bootstrap classloader -引导(也称为原始)类加载器,它负责加载Java的核心类。在Sun的JVM中,在执行java的命令中使用-Xbootclasspath选项或使用 - D选项指定sun.boot.class.path系统属性值可以指定附加的类。这个加载器的是非常特殊的,它实际上不是 java.lang.ClassLoader的子类,而是由JVM自身实现的。大家可以通过执行以下代码来获得bootstrap classloader加载了那些核心类库:

URL[] urls=sun.misc.Launcher.getBootstrapClassPath().getURLs();

for (int i = 0; i < urls.length; i++) {

System.out.println(urls.toExternalform());

}

在我的计算机上的结果为:

文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/dom.jar

文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/sax.jar

文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/xalan-2.3.1.jar

文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/xercesImpl-2.0.0.jar

文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/xml-apis.jar

文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/xsltc.jar

文件:/C:/j2sdk1.4.1_01/jre/lib/rt.jar

文件:/C:/j2sdk1.4.1_01/jre/lib/i18n.jar

文件:/C:/j2sdk1.4.1_01/jre/lib/sunrsasign.jar

文件:/C:/j2sdk1.4.1_01/jre/lib/jsse.jar

文件:/C:/j2sdk1.4.1_01/jre/lib/jce.jar

文件:/C:/j2sdk1.4.1_01/jre/lib/charsets.jar

文件:/C:/j2sdk1.4.1_01/jre/classes

这时大家知道了为什么我们不需要在系统属性CLASSPATH中指定这些类库了吧,因为JVM在启动的时候就自动加载它们了。

extension classloader -扩展类加载器,它负责加载JRE的扩展目录(JAVA_HOME/jre/lib/ext或者由java.ext.dirs系统属性指定的)中JAR的 类包。这为引入除Java核心类以外的新功能提供了一个标准机制。因为默认的扩展目录对所有从同一个JRE中启动的JVM都是通用的,所以放入这个目录的 JAR类包对所有的JVM和system classloader都是可见的。在这个实例上调用方法getParen

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值