黑马程序员———类加载器

2023-11-13

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------



Java虚拟机中可以安装多个类加载器,系统默认三个
主要类加载器,每个类负责加载特定位置的类:
BootStrap,ExtClassLoader,AppClassLoader

类加载器也是java类,因为其他是java类的类加载器
本身也要被类加载器加载,显然必须有第一个类加载器不是
java类,这正是BootStrap。

Java虚拟机中的所有类装载器采用具有父子关系的树形
结构进行组织,在实例化每个类装载器对象时,需要为其
指定一个父类装载器对象或者默认采用系统类装载器为
其父级类加载。

 

类加载器之间的父子关系和管辖范围图
-----------------------------------------------

BootStrap------------>JRE/lib/rt.jar
    |
ExtClassLoader------->JRE/lib/ext/*.jar
    |
AppClassLoader------->CLASSPATH指定的所有jar或目录
    ||       |<--SystemclassLoader
    ||__________ 
MyClassLoader  |    \  
               |      --->传智博客指定的特殊目录       
ItcastClassLoader   /


类加载器的委托机制:
当java虚拟机要加载一个类时,到底派出哪个类加载器
去加载呢?
 首先当前线程的类加载器其加载线程中的第一个类。
 如果类A中引用类B,JAva虚拟机将使用加载类A的类加载器
来加载类B。
还可以直接调用ClassLoader.loadClass()方法来指定某个
类加载器去加载某个类。

每个类加载器加载类时,先委托给其上级类加载器。
当所有祖先加载器没有加载到类,回到发起者类加载器,
还加载不了,则抛ClassNotFoundException,不是再去找
发起者类加载器的儿子,因为没有getChild方法,即使有,
那有多个儿子,找哪一个呢?
对着类加载器的层次结构图和委托加载原理,解释先前
将ClassLoaderTest输出成JRE/lib/ext目录下的itcast.jar
包中后,运行结果为ExtClassLoader的原因。

===================

模板方法设计模式

父类:loadClass/findClass/得到class文件的转换成字节码-->defineClass

子类1(自己干)
子类2(自己干)

 

 

server

 

 

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------



 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

黑马程序员———类加载器 的相关文章

  • 如何获取枚举的子集

    大多数情况下 包含所有元素的枚举显示在用户界面的下拉列表中 我们只需要在用户界面中显示 5 个字段中的 2 个 通过某种方式利用可用于枚举的相同函数来获取此数据的更简单方法是什么 enum Color RED GREEN BLACK BLU
  • 使用 Spring MVC 返回 PDF 文件

    实际上 我有这个功能 我有一个框架 可以在其中设置 URL ip port birt preview report report rptdesign format pdf parameters 并且该框架呈现 PDF 文件 但我想隐藏该网址
  • 按下按钮时清除编辑文本焦点并隐藏键盘

    我正在制作一个带有编辑文本和按钮的应用程序 当我在 edittext 中输入内容然后单击按钮时 我希望键盘和焦点在 edittext 上消失 但我似乎无法做到这一点 我在 XML 中插入了这两行代码 android focusable tr
  • 警告:跳过条目,因为它不是绝对 URI。 NetBeans 中的 GlassFish

    我成功安装了 GlassFish 但是 当我启动服务器时 我收到两条警告消息 警告 跳过条目 因为它不是绝对 URI 那是关于什么的 Launching GlassFish on Felix platform Aug 09 2014 10
  • 使用 java 的 RAR 档案 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Java 9 中可以使用提前编译吗?

    As per JEP 295 http openjdk java net jeps 295 任何 JDK 模块 类或用户代码的 AOT 编译都是实验性的 JDK 9 中不支持 要使用 AOT 化的 java base 模块 用户必须编译该模
  • JSON 对象数组转 Java POJO

    将此 JSON 对象转换为 java 中的类 您的 POJO 类中的映射将如何 ownerName Robert pets name Kitty name Rex name Jake This kind of question is ver
  • Spring 术语中命令、表单、业务和实体对象之间的区别?

    我试图理解这些对象在松散耦合系统方面的差异 业务对象与实体对象相同吗 我可以使用 MVC 中的业务或实体对象作为我的命令对象吗 命令对象与表单对象相同吗 只是寻找 Spring 术语和用法中对象类型的说明 我在 stackoverflow
  • 在java.util中获取错误ArrayList不带参数[重复]

    这个问题在这里已经有答案了 我已经创建了一个类 Student 现在我尝试将我的 Student 对象存储在 ArrayList 中 但在编译 ArrayList 不接受参数时出现错误 我已经检查了我的代码很多次 但找不到问题所在 我的学生
  • Java 反射:如何检索匿名内部类?

    我在另一个类中有一个匿名内部类 SomeClass Both SomeClass class getClasses and SomeClass class getDeclaredClasses 返回空数组 我在中找不到一些关于此的提示Cla
  • 在Java中使用BufferedWriter写入文件时监视文件大小?

    我正在将一个可能很长的项目列表写入文件 我正在写的项目的长度是可变的 如果生成的文件大小大于10M 则应将其分成多个文件 为了提高性能 我目前使用 BufferedWriter 如下所示 final FileOutputStream fos
  • 使用 include 进行 JAXB 剧集编译不起作用

    我有 2 个模式 A B 我在 B 中重用了一些 A 元素 我不使用命名空间 我在用着
  • 多对多不检索映射数据

    Spring boot 2 5 6 我无法安装版本 概要文件 java Getter Setter NoArgsConstructor AllArgsConstructor EqualsAndHashCode FieldDefaults l
  • java Runtime.getRunTime().exec 和通配符?

    我正在尝试使用删除垃圾文件 Process p Runtime getRuntime exec 只要我不使用通配符 它 就可以正常工作 即 Process p Runtime getRuntime exec bin rm f specifi
  • java 1.8下无法启动eclipse

    java 1 8 升级后我无法启动 eclipse 附上错误截图 这是我的 eclipse 配置设置 我该如何解决 startup plugins org eclipse equinox launcher 1 3 0 v20120522 1
  • 处理照片上传的最佳方式是什么?

    我正在为一个家庭成员的婚礼制作一个网站 他们要求的一个功能是一个照片部分 所有客人都可以在婚礼结束后前往并上传他们的照片 我说这是一个很棒的想法 然后我就去实现它 那么只有一个问题 物流 上传速度很慢 现代相机拍摄的照片很大 2 5 兆 我
  • 链表中的虚拟节点

    问 什么时候使用它们 作业问题 列表中的第一个和最后一个节点 有时用作列表中的第一个和最后一个节点 从未用作列表中的第一个和最后一个节点 维基百科说 哨兵节点是与链接一起使用的专门指定的节点 列表和树作为遍历路径终止符 哨兵节点的作用是 不
  • Java 相当于 Python 的 urllib.urlencode(基于 HashMap 的 UrlEncode)

    From https stackoverflow com questions 2018026 should i use urllib or urllib2 2018103 2018103 Java 中 Python 的 urllib url
  • Python 可以替代 Java 小程序吗?

    除了制作用于物理模拟 如抛射运动 重力等 的教育性 Java 小程序之外 还有其他选择吗 如果你想让它在浏览器中运行 你可以使用PyJamas http pyjs org 这是一个 Python 到 Javascript 的编译器和工具集
  • 安卓框架?

    是否有任何框架比构建 Android 应用程序更容易 您会对其中一个感兴趣吗 很快就会有 我正在开发 DroidFu 一个 Android 共享库 它将为您提供 活动 和服务 中直接提供大量实用功能 例如生成列表和错误对话框 检查 Inte

随机推荐

  • 竞赛选题 基于机器视觉的车道线检测

    文章目录 1 前言 2 先上成果 3 车道线 4 问题抽象 建立模型 5 帧掩码 Frame Mask 6 车道检测的图像预处理 7 图像阈值化 8 霍夫线变换 9 实现车道检测 9 1 帧掩码创建 9 2 图像预处理 9 2 1 图像阈值
  • Vue+elementUI el-input输入框手机号校验

    1 限制input框内只能输入数字 且为11位 type number 数字类型 maxlength属性对type number 类型的输入框无效 ninput if value length gt 11 value value slice
  • 达梦数据库教程:docker安装DM8数据库

    安装前准备 软硬件 版本 终端 X86 64 架构 Docker 2023 年 6 月版 下载 Docker 安装包 请在达梦数据库官网下载 Docker 安装包 导入安装包 拷贝安装包到 opt 目录下 执行以下命令导入安装包 docke
  • windows下nginx的安装及使用

    1 下载nginx http nginx org en download html 下载稳定版本 以nginx Windows 1 12 2为例 直接下载 nginx 1 12 2 zip 下载后解压 解压后如下 2 启动nginx 有很多
  • 为什么寄存器比内存快?

    原文出处 Mike Ash 译文出处 阮一峰 计算机的存储层次 memory hierarchy 之中 寄存器 register 最快 内存其次 最慢的是硬盘 同样都是晶体管存储设备 为什么寄存器比内存快呢 Mike Ash写了一篇很好的解
  • Vue使用routerlink实现点击导航栏进行页面跳转

    实现内容 如图所示 要实现的是 点击导航栏中的Data Set Data Mining Result List Model List区域跳转至对应界面 使用router link来实现跳转 1 如代码所示 router link后面的to需
  • linux笔记--文件内容操作和历史命令

    目录 cat命令 more命令 less命令 head命令 tail命令 sed命令 vim编辑器 history命令 clear命令 cat命令 查看文件内容 标准输出 补充 1 标准输出 在linux中规定为输出到屏幕 2 标准输入 在
  • 如何用cin读入空格

    在我们使用cin读入字符时 默认是跳过中间的空格以及可能的制表符和换行符 那么 如何让其不跳过空格呢 我们可以使用操作符noskipws来实现 cin gt gt noskipws 设置cin读取空白符 char ch while cin
  • 激光SLAM7-基于已知位姿的构图算法

    1 通过覆盖栅格建图算法进行栅格地图的构建 1 1 Theory 1 2 code 这里没有判断idx和hitPtIndex是否有效 start of TODO 对对应的map的cell信息进行更新 1 2 3题内容 GridIndex h
  • 服务器的相关知识

    服务器的分类 服务器指一个管理资源并为用户提供服务的计算机 通常分为文件服务器 数据库服务器和应用程序服务器 对于普通PC来说 服务器在稳定性 安全性 性能等方面都要求更高 因此CPU 芯片组 内存 磁盘系统 网络等硬件和普通PC有所不同
  • 主动配电网SOCP_OPF学习笔记(4)配电网重构

    配电网中的开关一般可分为联络开关和分段开关 联络开关负责转供备用和网络结构优化 常开 分段开关用于连接两条线路段的开关 为常闭 通过改变这两种开关的状态来调整网络拓扑结构 称为网络重构 加入联络开关支路会形成弱环网 1 辐射状拓扑约束 为了
  • 开源的推荐系统简介TOP 10

    最近这两年推荐系统特别火 本文搜集整理了一些比较好的开源推荐系统 即有轻量级的适用于做研究的SVDFeature LibMF LibFM等 也有重 量级的适用于工业系统的 Mahout Oryx EasyRecd等 供大家参考 PS 这里的
  • 利用chatgpt快速初步学习pandas

    最近体验了chatgpt作为编程助手的功能 确实很厉害 只要你擅长提问 找答案很精准快捷 由此可以想到是否能够通过系列提问 快速上手一个工具 以pandas为例 开始提问学习 是什么 有什么用 我需要用python处理表格数据 给我推荐现在
  • tp1900芯片对比7621a_貌似很多人看不起MTK,其实MTK7621A已经很给力了。

    以下内容为转载 和大家一起学习一下MTK7621A相关知识 全球无线通讯及数字多媒体IC设计领导厂商联发科技股份有限公司 MediaTek Inc 2013年11月宣告推出面向802 11ac高端路由器的全新双核网络芯片MT7621A MT
  • Python中将图片用base64进行编码

    我们可以使用base64模块 通过base64 b64encode 函数将图片直接转换为base64编码 import base64 假设a目录下有123 jpg图片 with open a 123 jpg rb as f read f r
  • 面试指南之如何介绍做过的项目

    面试是每个程序员都逃不过的一环 在我面试过的程序员中 有一半的程序员都描述不好自己做过的项目 有些都讲不到3分钟就结束了 听完我都不知道这个项目是做什么的 所以 决定写下这遍手记 希望对正在找工作的你有所帮助 在面试过程中 程序员都需要介绍
  • java人脸识别_使用百度智能云的人工智能模块,让你的Java应用更加智能

    人工智能 前言 之前有在微头条简单介绍了一下过程 想了一下 还是觉得给详细分享一下干货才行 于是才有了这篇文章 百度智能云 百度智能云是百度即All in AI主题之后开发出来的产品 总体看来可以分为两部分 第一部分是百度机器学习BML 是
  • arch linux使用iptables

    一 安装 arch中已经编译安装了iptables 无需重新安装 二 启动 iptables启动时 会读取 etc iptables iptables rules中写的规则 而Arch默认不启动iptables服务 也不会创建这个文件 这个
  • Windows环境下,使用GnuWin32工具安装后缀为patch的补丁到C源码软件包

    在CMD命令行 cd到GnuWin32安装目录的bin下 在命令行输入 patch exe d WORK DIR i PATCH FILE p 0 l N WORK DIR 要打补丁的目录 PATCH FILE 补丁文件 p 0 直接使用补
  • 黑马程序员———类加载器

    Java培训 Android培训 iOS培训 Net培训 期待与您交流 Java虚拟机中可以安装多个类加载器 系统默认三个 主要类加载器 每个类负责加载特定位置的类 BootStrap ExtClassLoader AppClassLoad