【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值 查看

相关推荐
weixin_458580123 分钟前
如何用 blur 与 focusout 区分不冒泡与冒泡的失焦事件
jvm·数据库·python
qq_3493174823 分钟前
Layui如何修改表格单元格内文字的行间距
jvm·数据库·python
兩尛32 分钟前
C++内存资源及管理
jvm
2301_7751481533 分钟前
Redis如何实现用户标签管理_利用Set结构存储唯一属性集合
jvm·数据库·python
m0_5964063738 分钟前
mysql如何配置审计日志输出_mysql audit_log_format设置
jvm·数据库·python
2301_816660211 小时前
Bootstrap框架的最小宽度限制是多少
jvm·数据库·python
abc123456sdggfd1 小时前
HTML5中Vuex持久化插件中WebStorage的底层配置
jvm·数据库·python
pele1 小时前
Go语言如何发GET请求_Go语言HTTP GET请求教程【总结】
jvm·数据库·python
weixin_580614001 小时前
Go 语言中 go install 命令的正确用法与常见误区详解
jvm·数据库·python
qq_654366981 小时前
Bootstrap 5移除jQuery依赖 Bootstrap 5如何不使用jQuery
jvm·数据库·python