首页 > 编程语言 >Java中的类加载器

Java中的类加载器

时间:2024-07-09 10:04:45浏览次数:17  
标签:jre Java lib ClassLoader HOME 加载

 类加载器

1.什么是类加载器?

  1. 启动类加载器(Bootstrap ClassLoader):这是JVM自带的类加载器,负责加载Java的核心类库,如rt.jar等。由于安全原因,启动类加载器加载的类不能被其他类加载器加载的类所引用。
  2. 扩展类加载器(Extension ClassLoader):负责加载Java的扩展类库,一般位于$JAVA_HOME/jre/lib/ext目录下。
  3. 系统类加载器(System ClassLoader):也称为应用类加载器(Application ClassLoader),它负责加载应用程序的类路径(classpath)下的所有类。
  4. 自定义类加载器:开发者可以通过继承java.lang.ClassLoader类来自定义类加载器,以满足特殊需求,如热部署、代码加密等。

2.什么是双亲委派机制?

        Java的类加载器采用双亲委派模型(Parent Delegation Model)。

        当一个类加载器收到类加载请求时,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成。每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中。只有当父类加载器无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子类加载器才会尝试自己去加载。

举个例子:如图

        1.Student类:这是一个我们自己加载的类。一开始准备在AppClassLoader加载,但它先不加载,它委托给它的上级加载器ExtClassLoader加载,然后ExtClassLoader继续向上委托。但Student类不在JAVA_HOME/jre/lib目录或JAVA_HOME/jre/lib/ext目录下,因此这两个加载器都不会加载Student类。这时候才会由AppClassLoader加载。

        2.String类:同上,它会从AppClassLoader一路向上委托,因为String类在JAVA_HOME/jre/lib目录中,因此BootStrapClassLoader就会加载String类。

JVM为什么采用双亲委派机制?

标签:jre,Java,lib,ClassLoader,HOME,加载
From: https://blog.csdn.net/qq_64064246/article/details/137856571

相关文章

  • java反射技术学习
    反射反射:加载类,并允许以编程的方式解剖类中的各种成分(成员变量,方法,构造器等)反射学什么?学习获取类的信息、操作他们1.反射第一步:加载类、获取类的字节码:Class对象 packagecom.itheima.reflect; ​ publicclassreflect1{   publicstaticvoidmain(String[]......
  • JavaScript介绍、初识(注释语法、书写位置、书写规范)、常量和变量、数据类型Number、
    【一】JavaScript介绍【1】什么是jsjs也是一门编程语言,他可以写后端代码【2】什么是node.js前端由于非常受制于后端,所以有一些人异想天开想要通过js来编写后端代码一统江湖由此开发了一个叫nodejs的工具(支持js跑在后端服务器上)但是并不能完美的实现【3】JavaScript......
  • Java 修饰符
    Java中的修饰符用于修饰类、方法、变量等元素,它们控制了这些元素的访问性、继承性和其他特性。主要的修饰符包括:1.**访问控制修饰符**:  -**public**:可以被任何其他类访问。  -**protected**:可以被同一包内的类及其子类访问。  -**default(nomodifier)*......
  • Java计算机毕业设计网上求职招聘系统(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的迅猛发展和普及,网络已成为人们获取信息、交流互动的重要平台。在就业市场日益竞争激烈的环境下,传统的求职招聘方式已难以满足求职者......
  • Java计算机毕业设计幼儿园管理系统(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着教育信息化的深入发展,幼儿园作为儿童启蒙教育的重要阶段,其管理模式的现代化与智能化已成为必然趋势。传统的手工记录、纸质管理方式不仅效率低下......
  • Java计算机毕业设计校园共享单车系统的设计与实现(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高校规模的不断扩大和学生人数的增加,校园内的交通问题日益凸显。传统的自行车管理方式不仅效率低下,还存在车辆调度不灵活、租赁流程繁琐、车辆维......
  • 基于Java+SpringBoot+Vue的影城管理系统的设计与开发(源码+lw+部署文档+讲解等)
    文章目录前言项目背景介绍技术栈后端框架SpringBoot前端框架Vue数据库MySQL(MyStructuredQueryLanguage)具体实现截图详细视频演示系统测试系统功能测试系统测试结论代码参考数据库参考源码获取前言......
  • Java高级-线程池
    1.什么是线程池?用于管理线程对象的池子。2.为什么使用线程池?一个线程大约占用内存1M。 1.解决频繁创建线程和销毁线程消耗的性能。 2.解决大量创建线程而导致的内存泄漏问题。3.如何创建线程池?Java中提供了两种方式:第一种:通过工具类完成线程池的创建-:语法简......
  • JAVA基础-----128陷阱
    一、何为128陷阱Java中Integer类型在使用==比较时的特殊行为------128陷阱,解释了当数值在-128到127范围内,由于valueOf方法的缓存机制导致地址相同,比较为真;超出这个范围则新分配内存,地址不同,比较为假。可以预测一下下面程序的输出结果:答案在最后后面!二、造成该现象的原因......
  • javaMap笔记分享
    Map映射(map)是存储键和值间关联(即,键值对)的对象。给定一个键,可以找到其值。键和值都是对象。键必须唯一,但是值可以重复。13.1 支持映射的接口接 口描 述Map将唯一键映射到值NavigableMap扩展SortedMap接口,以处理基于最接近匹配搜索原则的键/值对检索So......