首先,你自己创建一个java.lang.String类是不会被加载的,系统默认加载的依然是核心类库中的String,这是由类加载的双亲委派机制决定的。
零、引言
在Java的世界里,类加载器(ClassLoader)是每一个Java程序员都应该了解的基本概念之一,而其中最为重要且核心的机制当属“双亲委派模型”(Parent Delegation Model)。这一机制确保了Java应用程序的安全性和稳定性,本篇文章将深入浅出地解析双亲委派机制的原理、优势以及其实现过程,并通过代码实例加以说明。
一、什么是双亲委派机制?
双亲委派机制是一种Java虚拟机(JVM)用来加载类的策略。在这个模型下,每个类加载器首先不会尝试自己去加载一个类,而是将这个任务委托给其父类加载器去完成,如果父类加载器不能完成(包括其自身),则继续向上委托,直到最高层的启动类加载器(Bootstrap ClassLoader)。如果所有父类加载器都不能加载,则当前类加载器才会尝试自己加载这个类。
二、双亲委派机制的流程图解
graph TD;
A[当前类加载器] --> B(父类加载器);
B --> C(祖类加载器...);
C --> D(启动类加载器);
D -- 无法加载 --