美文网首页
【笔记】深入理解 java 虚拟机---类加载器

【笔记】深入理解 java 虚拟机---类加载器

作者: 张航_8ee7 | 来源:发表于2018-01-22 14:27 被阅读0次

    什么是类加载器。

    通过一个全限定名去找到一个类的二进制字节流。

    一个类如果是通过不同的加载器去加载的话。得到的类是不想等的。

    确定一个类的唯一性,要保证 类相同、类的加载器相同。

    如下:

    我们自己写的一个 classloder和  虚拟机自带的classloader。分别去加载 app这个类。

    得到结果

    class com.dongdao.App

    false。

    双亲委派模型。

    java 中的 加载器可以分为 3 大类。

    Bootstarp ClassLoader。启动类加载器。用来加载 \java_home\lib下的jar。

    Extension ClassLoader 。 扩展类加载器。用来加载  \java_home\lib\ext。

    Application Classloader 。 系统类加载器。我们程序中的clsaaLoader 就是用的这个加载器。跟我们开发最贴近。

    为什么要用到双亲委派模型?

    因为,上面我们讲到,确定一个类的唯一性要保证,类相同,加载器相同。

    双亲委派模型的工作机制是: 一个类要被加载,必须先让其父类的加载器进行加载,如果加载失败,则才让子类加载。

    假设,我们要加载 java.lang.Object,如果使用双亲机制,最终都是用bootstarpClassLoader 进行加载,因此object在虚拟机中是同一个类。相反,不使用双亲机制,使用不同的加载器去加载object,生成的object 也是不同的,java 体系的最基本行为都不能保证。

    相关文章

      网友评论

          本文标题:【笔记】深入理解 java 虚拟机---类加载器

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