JVM类加载器

JVM类加载器

根加载器

根加载器又被称为Bootstrap类加载器,该类加载器是最顶层的加载器,由c++编写,.主要负责虚拟机核心类库的加载, 例如java.lang包下的类都是根加载器加载, 可以通过 -Xbootclasspath来指定根加载器的路径,根加载器的加载路径可以通过sun.boot.class.path系统属性获得, 并且根加载器的引用是获取不到的, 如下

public class BootstrapClassLoader {
    public static void main(String[] args) {
        //输出根类加载器加载的路径
        System.out.println(System.getProperty("sun.boot.class.path"));
        //输出为 null, 因为获取不到引用
        System.out.println("Bootstrap:" + String.class.getClassLoader());
    }
}

以下为控制台输出

D:\work\JAVA\JDKJRE\jre\lib\resources.jar;
D:\work\JAVA\JDKJRE\jre\lib\rt.jar;
D:\work\JAVA\JDKJRE\jre\lib\sunrsasign.jar;
D:\work\JAVA\JDKJRE\jre\lib\jsse.jar;
D:\work\JAVA\JDKJRE\jre\lib\jce.jar;
D:\work\JAVA\JDKJRE\jre\lib\charsets.jar
;D:\work\JAVA\JDKJRE\jre\lib\jfr.jar;
D:\work\JAVA\JDKJRE\jre\classes
Bootstrap:null

 

扩展加载器

扩展加载器的父加载器是根加载器,主要加载JDK所在的文件的jre/lb/ext目录里面的类库,由java语言编写,继承java.lang.URLClassLoader, 加载的类库可以通过系统属性java.ext.dirs获得, 这跟上述代码是一样的,就不给例子了, 并且我们也可以将自己写的jar包放置在扩展类加载器的加载路径之中, 让其的加载器变为扩展类加载器( 一般为系统类加载器)

 

系统类加载器

系统类加载器的父加载器是扩展类加载器,其负责加载classpath下的类库资源,是我们常见的加载器.

系统类加载器的加载路径一般通过-classpath或者-cp指定,也可以通过系统属性java.class.path进行获取.例如

public class SystemClassLoader {
    public static void main(String[] args) {
        System.out.println(System.getProperty("java.class.path"));
        System.out.println(SystemClassLoader.class.getClassLoader());
    }
}

控制台打印

D:\work\JAVA\JDKJRE\jre\lib\charsets.jar;D:\work\JAVA\JDKJRE\jre\lib\deploy.jar;D:\work\JAVA\JDKJRE\jre\lib\ext\access-bridge-64.jar;D:\work\JAVA\JDKJRE\jre\lib\ext\cldrdata.jar;D:\work\JAVA\JDKJRE\jre\lib\ext\dnsns.jar;D:\work\JAVA\JDKJRE\jre\lib\ext\jaccess.jar;D:\work\JAVA\JDKJRE\jre\lib\ext\jfxrt.jar;D:\work\JAVA\JDKJRE\jre\lib\ext\localedata.jar;D:\work\JAVA\JDKJRE\jre\lib\ext\nashorn.jar;D:\work\JAVA\JDKJRE\jre\lib\ext\sunec.jar;D:\work\JAVA\JDKJRE\jre\lib\ext\sunjce_provider.jar;D:\work\JAVA\JDKJRE\jre\lib\ext\sunmscapi.jar;D:\work\JAVA\JDKJRE\jre\lib\ext\sunpkcs11.jar;D:\work\JAVA\JDKJRE\jre\lib\ext\zipfs.jar;D:\work\JAVA\JDKJRE\jre\lib\javaws.jar;D:\work\JAVA\JDKJRE\jre\lib\jce.jar;D:\work\JAVA\JDKJRE\jre\lib\jfr.jar;D:\work\JAVA\JDKJRE\jre\lib\jfxswt.jar;D:\work\JAVA\JDKJRE\jre\lib\jsse.jar;D:\work\JAVA\JDKJRE\jre\lib\management-agent.jar;D:\work\JAVA\JDKJRE\jre\lib\plugin.jar;D:\work\JAVA\JDKJRE\jre\lib\resources.jar;D:\work\JAVA\JDKJRE\jre\lib\rt.jar;E:\javaResource\ThreadLearn\out\production\ThreadLearn;D:\work\Builder\IntelliJ IDEA 2019.2\lib\idea_rt.jar
​
sun.misc.Launcher$AppClassLoader@18b4aac2

太多,懒得格式下了~.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值