类加载器

Java程序可以通过类加载器来达到通过一个类的全限定类名来获取该类的二进制字节流。

类与类加载器

对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,每一个类加载器都拥有一个独立的类名称空间。即时这两个类

双亲委派模型

三层类加载器:

  • 启动类加载器(Bootstrap Class Loader):负责加载\lib目录下面或者-Xbootclasspath参数指定的路径下存放的类库。启动类加载器无法被Java程序直接引用。
  • 扩展类加载器(Extension Class Loader):扩展Java SE功能的类库可以放在ext目录下面,由该加载器加载。这种加载器被模块化系统取代,开发者可以直接使用扩展类加载器加载Class文件
  • 应用程序类加载器(Application Class Loader):用来加载用户类路径下面的所有类库,如果应用程序中没有自定义过自己的类加载器,这个就是程序中默认的类加载器。

除此之外,用户还可以自定义类加载器来实现特定功能

双亲委派模型要求除了顶层启动类加载器以外,所有类加载器都应有自己的父类加载器。

双亲委派模型的工作流程:如果一个类加载器受到了类加载请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载去完成。

这个模型保证了一些底层类如Object是被同一个类加载器——启动类加载器加载的,避免出现多个重名但是被虚拟机认为不同类的情况的出现。保证了Java虚拟机的稳定运行。

破坏双亲委派模型

当一些标准服务类(由启动类加载器加载)需要调用用户代码的时候,启动类加载器是无法得知这些应用程序中的接口代码的,这时只能通过线程上下文类加载器来由上层逆向调用下层的代码。这个类加载器可以通过java.lang.Thread类的setContextClassLoader()方法进行设置,如果线程还未设置,他将会从父线程中继承一个,如果在应用程序的全局范围内都没有设置过的话,那这个类加载器默认的是应用程序类加载器。

后来在OSGI的环境下面,类加载器不再使用双亲委派模型,而是更加复杂的网状结构

java 根据类路径获取类_Java类加载器相关推荐

  1. JAVA基础加强(张孝祥)_类加载器、分析代理类的作用与原理及AOP概念、分析JVM动态生成的类、实现类似Spring的可配置的AOP框架...

    1.类加载器 ·简要介绍什么是类加载器,和类加载器的作用 ·Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader ...

  2. java类加载器分类_Java 类加载器的种类

    1.定义: 寻找类或接口字节码文件进行解析并构造JVM内部对象表示的组件. 2.种类: BootstrapClassLoader:用C++编写的,装载jre中的核心类库: ExtClassLoader ...

  3. java里加载是什么意思_Java 类加载机制详解

    什么是 Java 类加载机制? Java 虚拟机一般使用 Java 类的流程为:首先将开发者编写的 Java 源代码(.java文件)编译成 Java 字节码(.class文件),然后类加载器会读取这 ...

  4. java什么时候会触发类加载_Java 类加载器classLoader | 七日打卡

    类加载器是什么? Java程序启动时(或者在运行的过程中), jvm(Java虚拟机)会完成类的加载, 其中第一步就是使用类加载器classLoader将二进制流(.class文件)加载到内存中. 类 ...

  5. java的类加载器都有哪些_java类加载器包括哪些内容?树状结构示意图展示

    在我们科学技术与经济水平均高速发展的今天,掌握一门新兴技术对于每一个有志青年来说都是十分重要的.今天主要为大家详细介绍一下java的关键技术强化--类加载器,以及通过示意图展示它的结构. 首先为大家简 ...

  6. java引导类加载器_Java类加载器层次结构(一)

    类加载器有一种父/子关系.除了引导类加载器外,每个类加载器都有一个父类加载器.本章通过分析ClassLoader的源码来展示java类加载器的层次结构. 根据规定,类加载器会为它的父类加载器提供一个机 ...

  7. 《Java虚拟机原理图解》5. JVM类加载器机制与类加载过程

    参考网址:http://blog.csdn.net/luanlouis/article/details/50529868 0.前言 读完本文,你将了解到: 一.为什么说Jabalpur语言是跨平台的 ...

  8. java类验证和装载顺序_java类加载机制,你会了吗?

    什么是类加载机制呢? java虚拟机将编译后的class文件加载到内存中,进行校验.转换.解析和初始化,到最终的使用.这就是java类加载机制: 下面就开始今天的内容: 1.类加载的生命周期:加载(L ...

  9. java类验证和装载顺序_Java类加载机制实现流程及原理详解

    前言 我们知道,Java项目编译后会生成许许多多的class文件,class文件保存着类的描述信息.虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转化解析和初始化,最终形成可以被虚 ...

最新文章

  1. 学习笔记(5)——实验室集群LVS监控Web界面配置
  2. 爬取广州所有停车场数据(Python)(并行加速版本)
  3. mysql设计的步骤_mysql笔记8_数据库设计步骤
  4. Java私有,受保护,公共和默认
  5. 第二十期:想吃透监控系统,就这一篇够不够?
  6. android finish后不能ondestroy_Android面试基础(一)
  7. MoreLinq和Linq
  8. 真正UltraISO 9.5.5.2960中文完美注册版
  9. MT4用EA测试历史数据时日志出现:stopped because of stop out
  10. Python Excel教程之如何将多个 excel 文件合并为一个文件(教程含源码)
  11. APP上架需要准备的材料清单(上架规范和流程)
  12. Python 爬取笔趣阁小说
  13. 使用近场探头和电流探头进行EMI干扰排查
  14. DSP TMS320C6455 芯片支持库CSL API参考
  15. 概率论-小记录(矩估计)
  16. 友价商城源代码插件汇总
  17. Webpack配置全解析(基础篇)
  18. 动态加载script 加载完成回调事件
  19. Tableau学习笔记-04 | 标靶图、甘特图、瀑布图
  20. 用Python爬取城市天气预报信息并进行图片复刻

热门文章

  1. 前端学习(2260)高校案例
  2. 前端学习(2237):react实现疫情数据
  3. 前端学习(2042)vue之电商管理系统电商系统之优化生成打包报告
  4. 前端学习(1373):构建模块化路由2
  5. 第十二期:七种优秀的浏览器兼容性测试工具
  6. 玩转oracle 11g(29):检查操作系统版本和查询表中修改数据
  7. vue element-ui级联选择器选中后下拉框自动收起
  8. Linux:建立内核代码树
  9. 微信小程序运行报错---invoke event
  10. python3.6安装【scrapy】-最保守方法