程序员后端小树林

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

2018-08-22  本文已影响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) 设置新线程的上下文加载器

上一篇下一篇

猜你喜欢

热点阅读