首页 > 其他分享 >什么是类加载器,类加载器有哪些?

什么是类加载器,类加载器有哪些?

时间:2022-10-08 10:35:03浏览次数:56  
标签:类库 Java 自定义 哪些 扩展 器有 Class 加载

实现通过类的全限定名获取该类的二进制字节流的代码块叫做类加载器。

一、启动类加载器(Bootstrap Class Loader)

这个类加载器负责加载存放在<JAVA_HOME>\lib目录,或者被-Xbootclasspath参数所指定的路径中存放的,而且是Java虚拟机能够识别的(按照文件名识别,如rt.jar、tools.jar,名字不符合的类库即使放在lib目录中也不会被加载)类库加载到虚拟机的内存中。启动类加载器无法被Java程序直接引用,用户在编写自定义类加载器时,如果需要把加载请求委派给引导类加载器去处理,那直接使用null代替即可。

二、扩展类加载器(Extension Class Loader)

这个类加载器是在类sun.misc.Launcher$ExtClassLoader 中以Java代码的形式实现的。它负责加载<JAVA_HOME>\lib\ext目录中,或者被java.ext.dirs系统变量所指定的路径中所有的类库。根据扩展类加载器这个名称,就可以推断出这是一种Java系统类库的扩展机制,JDK的开发团队允许用户将具有通用性的类库放置在ext目录里以扩展Java SE的功能,在JDK9之后,这种扩展机制被模块化带来的天然的扩展能力所取代。由于扩展类加载器是由Java代码实现的,开发者可以直接在程序中使用扩展类加载器来加载Class文件。

三、应用程序类加载器(Application Class Loader)

这个类加载器由sun.misc.Launcher$AppClassLoader来实现。由于应用程序类加载器是ClassLoader类中的getSystem-ClassLoader()方法的返回值,所以有些场合中也称它为“系统类加载器”。它负责加载用户类路径

(ClassPath)上所有的类库,开发者同样可以直接在代码中使用这个类加载器。如果应用程序中没有自定义过自己的类加载器,一般情况下这个就是程序中默认的类加载器。

四、自定义类加载器

  • 想加载非 classpath 随意路径中的类文件
  • 通过接口来使用实现,希望解耦时,常用在框架设计
  • 这些类希望予以隔离,不同应用的同名类都可以加载,不冲突,常见于 tomcat 容器
  • 继承ClassLoader父类

标签:类库,Java,自定义,哪些,扩展,器有,Class,加载
From: https://www.cnblogs.com/leepandar/p/16768155.html

相关文章

  • WGCLOUD监控平台可以实现哪些指标的可视化管理
    WGCLOUD是一个优秀的开源项目,主要用于自动化运维管理工作,减轻我们的工作复杂度,更具备灵活的告警机制WGCLOUD可以监测实体机、虚拟机、云主机等等,也可以PING监测各种网络设......
  • SpringBoot加载自动配置类的流程
    自定义过starter的同学应该都知道,自动配置类需要用EnableAutoConfiguration注解修饰,并且需要将自动配置类配置在spring.factories中。但自动配置类是如何被SpringBoot加......
  • 搞不懂JVM的类加载机制,JVM性能优化从何谈起?
    大家好,我是狂野君,今天继续分享JVM性能优化之​​类加载​​篇主要内容有:加载验证准备解析初始化紧接上文,​​4859字,609行,一次讲清楚JVM运行数据区​​​​【图文并茂】这......
  •  Spring的加载过程-配置文件加载过程(一)
    1、原因不知不觉已经从事java开发好几年了,成了人们口中的老司机。但是一直都是恍恍惚惚过来,对于框架底层实现一直都没有怎么了解过,只是在面试的时候背些面试题。慢慢地发......
  • React 新的文档用到了哪些技术?
    前言beta.reactjs.orgReact的新的文档已经完成了70%并且呼吁社区进行翻译工作。新的文档采用了全新的架构​​next.js​​​+​​TailwindCSS​​,改版后的文档......
  • MyBatis框架:第八章:自定义结果集,一对一,一对多,延迟加载,赖加载
    13.1、自定义结果集介绍自定义结果集,可以给复杂的对象使用。也就是对象内又嵌套一个对象。或者一个集合。在这种情况下。前面学过的知识点,已经无法直接获取出对象内对象......
  • 云原生是什么?云原生关键技术有哪些?
    梯度科技在广西南宁举办第一场线下技术沙龙“万物原生云启未来”,围绕云原生技术、产品和落地方案,分享了梯度在云原生领域的成就。究竟云原生是什么?云原生关键技术有哪些?......
  • 深度学习刷SOTA有哪些trick?
    深度学习刷SOTA有哪些trick?【写在前面】对深度学习而言,不论是学术研究还是落地应用都需要尽可能提升模型效果,这往往需要trick进行支撑。这些trick有的是广泛适用的(如循环学......
  • [CG从零开始] 6. 加载一个柴犬模型学习UV贴图
    在第5篇文章中,我们成功加载了fbx模型,并且做了MVP变换,将立方体按照透视投影渲染了出来。但是当时只是随机给顶点颜色,并且默认fbx文件里只有一个mesh,这次我们来加载......
  • java类加载器 defineClass和loadClass的区别
    在阅读《自己动手写java虚拟机》时,通过观察P133~P135的代码classLoader会将加载过的class保存起来(包括defineclass的类),而只有在要加载一个类时 没有从已加载的类找到......