双亲委托机制

IDEA将代码转为.class文件,然后用classloader将.class文件加载到JVM中去执行。

Java类加载器的继承:

双亲委托机制

当一个类加载器接受到一个类加载请求时,先委派给它的父类去完成。

user classloader会抛给application classloader,逐层往上委派,直到最高的祖先bootstrap classloader。

bootstrap classloader加载失败?发派给儿子extension classloader,如果成功就结束,失败就往下传,如果直到底,都加载失败,就会抛出ClassNotFoundException异常。

在每层处理类加载请求前,都会check是否加载过了,已加载的不会重复加载。

如果有人想替换系统级别的类:String.java。篡改它的实现,但是在这种机制下这些系统的类已经被Bootstrap classLoader加载过了,所以并不会再去加载,从一定程度上防止了危险代码的植入。