JVM类加载器与双亲委派机制

    技术2022-07-11  91

    类加载器主要目的是将编译后(.class文件)加载到jvm中,具体点也就是jvm的方法区。类加载器分为两种:jvm自带类加载器、用户自己实现类加载器。

    jvm自带类加载器:

    (1)启动类加载器(Bootstrap ClassLoader):这个主要是类加载器是由C++实现的,它用来加载 %JAVA_JRE%\lib\rt.jar,启动类加载器无法被java程序引用。

    (2)扩展类加载器(Extension ClassLoader):它用来加载%JAVA_JRE%\lib\ext下的,如:javax开头的包。

    (3)应用类加载器(Application ClassLoader):它用来加载classpath下的所有类文件。

    用户自己实现类加载器:

    java.lang.classLoader的子类,用户可以定制类的加载方式。

    双亲委派机制:

    如果一个类收到加载请求,它不会立即加载,而是去找父类加载器,每个层级都是这样的。因此最终所有的类的加载请求都会被传到启动类加载器,只有当父类反馈无法完成该类加载,最终子类加载器才会尝试性加载。

    例如:用户自定义java.lang.String类,在类启动加载的时候,会先从启动类加载器去加载,而rt.jar包中jvm已经为我们提供String类,类加载器尝试加载String类后,用户自定义String将不会再被加载。

     

     

    Processed: 0.013, SQL: 9