天天看点

双亲委派机制背景加载过程作用

背景

Java源代码被编译器编译成.class的字节码文件,然后由ClassLoader负责将这些class文件给加载到JVM中去生成对应Class对象

ClassLoader分为4层:

BootstrapClassLoader(启动类加载器):核心类,java.lang.*

ExtClassLoader(标准扩展类加载器):jre等扩展类

AppClassLoader(系统类加载器):应用程序的主函数类

CustomClassLoader(用户自定义类加载器):可加载指定路径的类

加载过程

每次加载类时,先从最底层开始,检查该类是否加载过,如果没加载过并且存在父加载器,并在父加载器中执行这个过程,直到不存在父加载器。然后从最顶层开始尝试加载,如果无法加载,则交给下一层加载。如果最底层也无法加载,就抛出异常

作用

1、避免类重复加载

2、保证安全,如果想要篡改一个核心类,但由于核心类会先由顶层ClassLoader加载,其他加载器会检测到这个类已经被加载过,就不会重复加载