美文网首页
JVM-双亲委派模型小结

JVM-双亲委派模型小结

作者: 枫叶忆 | 来源:发表于2019-06-03 15:51 被阅读0次

    jvm小结(后续补充)

    1、虚拟机的类加载机制

    虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化。最终形成可以被虚拟机最直接使用的java类型的过程就是虚拟机的类加载机制。

    2、类加载器

    BootstrapClassLoader:只能用于加载JDK核心类库,系统变量为sun.boot.class.path下面的类。该目录下的%JAVA_HOME%/jre/lib/下的resources.jar;rt.jar等核心类库,该loader底层采用C++编写,自然你也就不能调用啦。

    ExtClassLoader :用于加载一些扩展类,系统变量为java.ext.dirs中的类。作用:加载开发者自己扩展类。

    AppClassLoader:用于加载用户类,这个就是java.class.path下的类,也就是我们自己编写出来的类。

    3、双亲委派模型

    某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务时,才自己去加载。

    4、为什么需要双亲委派机制

    保证唯一性:

    防止内存中出现多份同样的字节码。试想,如果没有双亲委派模型而是由各个类加载器自行加载的话,如果用户编写了一个java.lang.Object的同名类并放在ClassPath中,多个类加载器都去加载这个类到内存中,系统中将会出现多个不同的Object类,那么类之间的比较结果及类的唯一性将无法保证.

    保证安全:

    由于所有的用户类都会先通过bootstrapclassloader 查看里面有没有该类资源,有则直接安装或者加载,从而保证了底层的类一定是预先加载的,这样可以对虚拟机的安全得到了很好的保证。


    相关文章

      网友评论

          本文标题:JVM-双亲委派模型小结

          本文链接:https://www.haomeiwen.com/subject/vtwcxctx.html