【JVM从入门到实战】(五)类加载器

一、什么是类加载器

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

类加载器只参与加载过程中的字节码获取并加载到内存这一部分。

二、jdk8及之前的版本 类加载器分为三类:

  1. 启动类加载器-加载Java中最核心的类:启动类加载器(Bootstrap ClassLoader)是由Hotspot虚拟

    机提供的、使用C++编写的类加载器。默认加载Java安装目录/jre/lib下的类文件,比如rt.jar,tools.jar,resources.jar等。

    通过启动类加载器去加载用户jar包:推荐,使用jvm参数 -Xbootclasspath/a:jar包目录/jar包名 进行扩

  2. 扩展类加载器-允许扩展Java中比较通用的类、应用程序类加载器-加载应用应用使用的类、扩展类加载器和应用程序类加载器都是JDK中提供的、使用Java编写的类加载器。

    它们的源码都位于sun.misc.Launcher中,是一个静态内部类。继承自URLClassLoader。具备通过目录或者指定jar包将字节码文件加载到内存中。

扩展类加载器(Extension Class Loader)是JDK中提供的、使用Java编写的类加载器。默认加载Java安装目录/jre/lib/ext下的类文件。

三、Arthas中类加载器相关功能

类加载器的详细信息可以通过classloader命令查看:

classloader - 查看 classloader 的继承树,urls,类加载信息,使用 classloader 去 getResource

类加载器的加载路径可以通过classloader --c hash值 查看

相关推荐
一只小白0002 分钟前
【JVM | 第三篇】—— 类的生命周期 完整详解
jvm
light blue bird31 分钟前
支轴事件任务线程执行工序路径的图表组件
前端·jvm·windows
fengxin_rou36 分钟前
【从零开始的JUC并发第五章】:线程池详解
java·jvm·spring
小江的记录本10 小时前
【JVM虚拟机】堆内存分代模型:年轻代(Eden+Survivor)、老年代、元空间Metaspace(附《思维导图》+《面试高频考点清单》)
java·前端·jvm·后端·python·spring·面试
思麟呀17 小时前
C++11并发编程:call_once一次性执行+atomic原子类型+CAS无锁编程+自旋锁
linux·开发语言·jvm·c++·windows
Fanfanaas19 小时前
C++ 继承
java·开发语言·jvm·c++·学习·算法
周杰伦fans21 小时前
C# 异常继承深度解析:从设计原则到 sealed 关键字的奥秘
java·jvm·c#
小L写Java1 天前
第三章:Java 内存模型 (JMM) 与运行时数据区
java·jvm
在繁华处1 天前
Java从零到熟练(十):JVM基础与性能优化
java·jvm·性能优化
go不是csgo2 天前
GORM 上手:一个 main.go 跑通 Go 数据库增删改查
jvm·数据库·golang