★★1.三个JVM默认的类加载器?
BootStrap ExtClassLoader AppClassLoader
2.JVM加载一个类时,到底派谁去加载?
1.当前线程的类加载器去加载线程的第一个类
2.如果类A引用类B,则用类A的加载器去加载类B
3.用ClassLoader.loadClass(),去指定类加载器
★★3.类加载器的委托机制?
每个类加载器在加载类时,会先委托给上级加载器,上级加载器又会委托给上上级,直到最上级,然后从最上级开始,一级一级往下去加载类,直到发起者加载器
如果还是没加载到类,那就抛出ClassNotFoundException,不再去找子类加载器,这样可以保证加载类的唯一性。
4.如何自定义加载器
继承ClassLoader,覆盖findClass(),而不覆盖loadClass().因为要继承其委托机制
★★5.什么时候使用自定义类加载器?
当要加载系统默认的类加载器不能加载的类时,就需要自定义类加载器,比如有一些加密的class文件,只能使用指定的解密类加载器。
本文详细介绍了JVM中三个默认类加载器:BootStrap、ExtClassLoader 和 AppClassLoader 的作用,以及类加载器的委托机制。同时讲解了类加载的具体流程,并探讨了自定义类加载器的方法及应用场景。
822

被折叠的 条评论
为什么被折叠?



