202108120808 - 类加载器及双亲委派机制

  • Bootstrap ClassLoader
    这是加载器中的大 Boss,任何类的加载行为,都要经它过问。它的作用是加载核心类库,也就是 rt.jar、resources.jar、charsets.jar 等。当然这些 jar 包的路径是可以指定的,-Xbootclasspath 参数可以完成指定操作。
    这个加载器是 C++ 编写的,随着 JVM 启动。

  • Extention ClassLoader
    扩展类加载器,主要用于加载 lib/ext 目录下的 jar 包和 .class 文件。同样的,通过系统变量 java.ext.dirs 可以指定这个目录。
    这个加载器是个 Java 类,继承自 URLClassLoader。

  • App ClassLoader
    这是我们写的 Java 类的默认加载器,有时候也叫作 System ClassLoader。一般用来加载 classpath 下的其他所有 jar 包和 .class 文件,我们写的代码,会首先尝试使用这个类加载器进行加载。

  • Custom ClassLoader
    自定义加载器,支持一些个性化的扩展功能。

双亲委派机制

1、防止重复加载同一个.class。通过委托去向上面问一问,加载过了,就不用再加载一遍。保证数据安全。
2、保证核心.class不能被篡改。通过委托方式,不会去篡改核心.clas,即使篡改也不会去加载,即使加载也不会是同一个.class对象了。不同的加载器加载同一个.class也不是同一个Class对象。这样保证了Class执行安全。

引用

https://www.jianshu.com/p/1e4011617650

posted @ 2025-03-20 18:37  钱塘江畔  阅读(16)  评论(0)    收藏  举报