前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java虚拟机加载类文件大全-精细版

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

作者头像
用户2436820
发布2018-09-05 10:30:24
3240
发布2018-09-05 10:30:24
举报
文章被收录于专栏:奔跑的蛙牛技术博客

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.08.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • java加载类文件精细版,请仔细看
    • Java技术提供三种确保安全机制
      • 类加载器
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档