jvm双亲委派机制
2020-06-16 10:26:06 0 举报
双亲委派
作者其他创作
大纲/内容
由C++语言实现,负责加载%JAVA_HOME%\\bin目录下的所有jar包,或者是-Xbootclasspath参数指定的路径,此加载器无法被Java应用程序直接引用
用户自定义类加载器Custom ClassLoader
Parent
sun.misc.Launcher.ExtClassLoader实现,负责加载%JAVA_HOME%\\bin\\ext目录下的所有jar包,或者是java.ext.dirs参数指定的路径,开发者可以直接使用此加载器
应用程序类加载器Application ClassLoader
Null
Launcher
双亲委派机制得工作过程:1-类加载器收到类加载的请求;2-把这个请求委托给父加载器去完成,一直向上委托,直到启动类加载器;3-启动器加载器检查能不能加载(使用findClass()方法,能就加载(结束);否则,抛出异常,通知子加载器进行加载。4-重复步骤三;
负责加载应用类
通过一个类的全限定名来获取描述此类的二进制字节流
this.classLoader
意义:1、防止类的重复加载防止内存中出现多份同样的字节码。试想,如果没有双亲委派模型而是由各个类加载器自行加载的话,如果用户编写了一个java.lang.Object的同名类并放在ClassPath中,多个类加载器都去加载这个类到内存中,系统中将会出现多个不同的Object类,那么类之间的比较结果及类的唯一性将无法保证.2、程序安全,防止核心API被篡改由于所有的用户类都会先通过bootstrapclassloader 查看里面有没有该类资源,有则直接安装或者加载,从而保证了底层的类一定是预先加载的,这样可以对虚拟机的安全得到了很好的保证。
扩展类加载器Extension ClassLoader
引导类加载器BootStrap ClassLoader
0 条评论
下一页
为你推荐
查看更多