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

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) 设置新线程的上下文加载器

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3slweh0ociucw

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容