文章目录
- [1. dump](#1. dump)
- [2. classloader](#2. classloader)
1. dump
-
作用:将已加载类的字节码文件保存到特定目录:
logs/arthas/classdump/
-
参数
数名称 | 参数说明 |
---|---|
class-pattern | 类名表达式匹配 |
[c:] |
类所属 ClassLoader 的 hashcode |
[E] | 开启正则表达式匹配,默认为通配符匹配 |
- 举例
bash
把String类的字节码文件保存到~/logs/arthas/classdump/目录下
dump java.lang.String
bash
把demo包下所有的类的字节码文件保存到~/logs/arthas/classdump/目录下
dump demo.*
- 效果
小结
-
dump作用:将正在JVM中运行的程序的字节码文件提取出来,保存在logs相应的目录下
-
不同的类加载器放在不同的目录下
2. classloader
- 获取类加载器的信息
作用
-
classloader
命令将 JVM 中所有的classloader的信息统计出来,并可以展示继承树,urls等。 -
可以让指定的classloader去getResources,打印出所有查找到的resources的url。对于
ResourceNotFoundException
异常比较有用。
- 参数说明
参数名称 | 参数说明 |
---|---|
[l] | 按类加载实例进行统计 |
[t] | 打印所有ClassLoader的继承树 |
[a] | 列出所有ClassLoader加载的类,请谨慎使用 |
[c:] |
ClassLoader的hashcode |
[c: r:] |
用ClassLoader去查找resource |
[c: load:] |
用ClassLoader去加载指定的类 |
- 举例
bash
默认按类加载器的类型查看统计信息
classloader

bash
按类加载器的实例查看统计信息,可以看到类加载的hashCode
classloader -l

bash
查看ClassLoader的继承树
classloader -t

bash
通过类加载器的hash,查看此类加载器实际所在的位置
classloader -c 70dea4e

bash
使用ClassLoader去查找指定资源resource所在的位置
classloader -c 70dea4e -r META-INF/MANIFEST.MF

bash
使用ClassLoader去查找类的class文件所在的位置
classloader -c 70dea4e -r java/lang/String.class

bash
使用ClassLoader去加载类
classloader -c 70dea4e --load java.lang.String

- 小结
classloader命令主要作用有哪些?
- 显示所有类加载器的信息
- 获取某个类加载器所在的jar包
- 获取某个资源在哪个jar包中
- 加载某个类