美文网首页程序员后端小树林
Java虚拟机加载类文件大全-精细版

Java虚拟机加载类文件大全-精细版

作者: 奔跑的蛙牛 | 来源:发表于2018-08-22 21:35 被阅读18次

    java加载类文件精细版,请仔细看

    Java技术提供三种确保安全机制

    1. 语言设计特性 (对数组的边界进行检查、类型转换检查、无指针算法)
    2. 安全的访问控制机制
    3. 代码签名

    类加载器

    先看一下虚拟机执行步骤

    1. 虚拟机有一个用于加载类文件的机制,不管是从磁盘上读取文件还是请求web上的资源,都使用该机制进行加载myProgram类文件的内容
    2. 如果myProgram类拥有另外一个类的域或者超类是另一个类,那么另一个类文件会被加载(此过程称之为解析)
    3. 然后虚拟机执行myProgram类中的main方法(此类是静态的无需创建类的实例)
    4. 如果main 方法或者main调用的方法要用到更多的类,那么接下来将会加载更多的类

    类加载机制并不是使用单个加载器,至少拥有三个

    1. 引导类加载器:负责加载系统类(从rt.jar进行加载)
    2. 扩展类加载器:负责扩展器类加载用于从jre/lib/ext目录加载
    3. 系统类加载器:用于加载应用类 通过classpath执行加载

    类加载器层次结构

    类加载器存在父子关系
    例如系统类加载器要加载java.util.ArrayList,首先要求扩展类进行加载,然后扩展类加载器要求引导类加载器进行加载。


    类加载器层次结构

    什么是类加载器倒置

    类加载器倒置

    上下文类加载器

    每一个线程对应一个类加载器的引用,称之为上下文类加载器。
    主线程的上下文类加载器是系统类加载器。
    新线程创建的上下文类加载器被设置为创建该线程的上下文下载器
    所以不做任何情况下新线程的类加载器默认是系统类加载器

    thread.setContextClassLoader(loader) 设置新线程的上下文加载器

    相关文章

      网友评论

      本文标题:Java虚拟机加载类文件大全-精细版

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