美文网首页
ClassLoder学习笔记

ClassLoder学习笔记

作者: 测试员 | 来源:发表于2019-10-08 16:45 被阅读0次

    ClassLoder

    负责加载class文件,class文件在文件开头有特定的文件标识,将class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构并且ClassLoader只负责class文件的加载,至于它是否可可以运行,并由Execution Engine决定

    介绍双亲委派机制

    java中有BootStrapClassLoaderExtClassLoaderAppClassLoader三类加载器。(其实还有自定义类加载器用于给程序加密,没什么用,暂不介绍)
    启动类加载器 】BootStrapClassLoader用于加载java核心类库
    扩展类加载器 】ExtClassLoader用于加载java扩展类库
    应用类加载器 】AppClassLoader用于加载自己编写的类

    加载类时,他们的执行顺序是 BootStrapClassLoader==>ExtClassLoader==>AppClassLoader

    这样做的理由是保护JDK自带的类不被污染

    总结

    什么是类加载器?

    将字节码文件送往JVM中的引导对象就是类加载器

    有几种?

    四种,启动类加载器、扩展类加载器、应用类加载器、自定义类加载器。(面试就说三种,前三种)

    什么是双亲委派机制?

    AppClassLoader加载一个class时,它首先会把类加载请求委派给父类加载器ExtClassLoader去完成。
    ExtClassLoader加载一个class时,它首先会把类加载请求委派给BootStrapClassLoader去完成。
    BootStrapClassLoader没找到这个要加载的类,会使用ExtClassLoader来尝试加载;
    ExtClassLoader也加载失败,则会使用AppClassLoader来加载,如果AppClassLoader也加载失败,则会报出异常ClassNotFoundException。

    什么是沙箱安全机制?

    沙箱安全机制是由基于双亲委派机制上采取的一种JVM的自我保护机制,假设你要写一个java.lang.String 的类,由于双亲委派机制的原理,此请求会先交给Bootstrap试图进行加载,但是Bootstrap在加载类时首先通过包和类名查找rt.jar中有没有该类,有则优先加载rt.jar包中的类,因此就保证了java的运行机制不会被破坏.

    Execution Engine

    是执行引擎,负责解释命令,提交到操作系统。

    相关文章

      网友评论

          本文标题:ClassLoder学习笔记

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