JVM——类加载器、类加载器的分类

server/2024/11/17 0:47:18/

类加载器是java虚拟机提供给应用程序去 实现获取类和接口字节码数据 的技术

类加载器的分类:

  • 一类是 Java代码中实现的
  • 一类是 Java虚拟机底层源代码实现的

通常可以细分为三大类:jdk8版本中的

  • java代码中的
    • 扩展类加载器:Extension 允许扩展Java中比较通常的类 (比较通用但是不特别重要)
    • 应用程序类加载器Application 加载应用所使用的类,还有一些第三方中jar包中的类
  • java虚拟机中的
    • 启动类加载器Bootstrap:加载java中最核心的类 比如String类

可以通过Arthas中的类加载器查看:

//使用下面的命令
$ classloader 

启动加载器

(Bootstrap ClassLoader)是由Hotspot虚拟机提供的、使用C++编写的类加载器。

默认加载Java安装目录/jre/lib下的类文件,比如rt.jar,tools.jar,resources.jar等。

  • 通过启动类加载器去加载用户的jar包:
    • 放入jre/lib下去进行扩展:
      • 不推荐,可能会出现即使放进去由于文件名不匹配的问题也不会正常的被加载。
    • 使用参数进行扩展:
      • 推荐,使用-Xbootclasspath/a:jar包目录/jar包名进行扩展

扩展类加载器+应用程序类加载器:

  • 扩展类加载器和应用程序加载器都是JDK中提供的,使用Java编写的类加载器
  • 他们的源码都位于sun.misc.Launcher中,是一个静态内部类。继承字URLClassLoader。具备通过目录或者指定jar包将字节码文件加载到内存中。

扩展类加载器:

  • 默认加载Java安装目录/jre/lib/ext下的类文件

通过扩展类加载器区加载用户jar包:

  • 放入/jre/lib/ext下进行扩展
  • 使用参数进行扩展
    • 推荐,使用-Djava.ext.dirs=jar包目录 进行扩展,这这种凡是会覆盖掉原始目录,可以用;(windows):(macos/linux)追加上原始目录。

双亲委派机制:

由于Java虚拟机中有多个类加载器,双亲委派机制的核心是解决一个类到底由谁加载的问题。

双亲委派机制的详细内容我会在下一篇文章介绍


http://www.ppmy.cn/server/142511.html

相关文章

力扣-Mysql-3322- 英超积分榜排名 III(中等)

一、题目来源 3322. 英超积分榜排名 III - 力扣(LeetCode) 二、数据表结构 表:SeasonStats --------------------------- | Column Name | Type | --------------------------- | season_id | int | | team_id …

Element-ui Select选择器自定义搜索方法

效果图 具体实现 <template><div class"home"><el-selectref"currencySelect"v-model"currency"filterable:spellcheck"false"placeholder"请选择":filter-method"handleCurrencyFilter"change&q…

刷题统计(C语言)

问题描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天 做 aa 道题目, 周六和周日每天做 bb 道题目。请你帮小明计算, 按照计划他将在 第几天实现做题数大于等于 nn 题? 输入格式 输入一行包含三个整数 a,ba,b 和 nn. 输出格式 输出一个整数代表天…

将 HTML 转换为 JSX:JSX 和 JSX 规则

JSX 是 JavaScript 的语法扩展。您可以在 JavaScript 文件中编写 HTML 格式。 它基于 Web、Html、Css 和 JavaScript。Web 开发人员将页面内容分别编写为 Html 文件&#xff0c;将设计编写为 Css 文件&#xff0c;将逻辑编写为 JavaScript 文件。 须知 &#xff1a; JSX 是一个…

Spring Boot编程训练系统:实战开发技巧

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

C++__day1

1、思维导图 2、如果登录失败&#xff0c;提示用户登录失败信息&#xff0c;并且提示错误几次&#xff0c;且重新输入&#xff1b;如果输入错误三次&#xff0c;则退出系统 #include <iostream> using namespace std;int main() {string id , pswd;string user"admi…

PCA 原理推导

针对高维数据的降维问题&#xff0c;PCA 的基本思路如下&#xff1a;首先将需要降维的数据的各个变量标准化&#xff08;规范化&#xff09;为均值为 0&#xff0c;方差为 1 的数据集&#xff0c;然后对标准化后的数据进行正交变换&#xff0c;将原来的数据转换为若干个线性无关…

JavaWeb笔记整理——Spring Task、WebSocket

目录 SpringTask ​cron表达式 WebSocket SpringTask cron表达式 WebSocket