JVM探究
1.JVM位置
2.JVM体系结构
3.类加载器
作用:加载class文件~
1.虚拟机自带的加载器
2.启动类(根)加载器(Bootstrap ClassLoder) 负责加载jre核心类库如rt.jar包
3.扩展类加载器(Extension ClassLoder) 负责加载JAVA_HOME/lib/ext路径下的jar包
4.应用程序(系统类)加载器(Application ClassLoder) 负责加载用户路径ClassPath路径下的包
5.双亲委派机制
作用:检测安全性
1.APP–>EXC—>BOOT(最终执行) //一层一层向上检索
2.BOOT–>EXC–>APP //向下执行
注: 1.类 加载器收到类加载的请求
2.将这个请求向上委托给父类加载器去完成,一直向上委托,直到启动类加载器
3.启动加载器检查(向上)是否能够加载当前这个类,能加载就结束,使用当前的加载器,否则,抛出异常,通知子
类加载器进行加载.
4.重复步骤3
源代码
public Class<?> loadClass(String name) throws ClassNotFoundException {
return loadClass(name, false);
}
// -----??-----
protected Class<?> loadClass(String name, boolean resolve)
throws ClassNotFoundException
{
// 首先,检查是否已经被类加载器加载过
Class<?> c = findLoadedClass(name);
if (c == null) {
try {
// 存在父加载器,递归的交由父加载器
if (parent != null) {
c = parent.loadClas