文章目录
- 1. dump
- 2. classloader
1. dump
-
作用:将已加载类的字节码文件保存到特定目录:
logs/arthas/classdump/ -
参数
| 数名称 | 参数说明 |
|---|---|
| class-pattern | 类名表达式匹配 |
[c:] | 类所属 ClassLoader 的 hashcode |
| [E] | 开启正则表达式匹配,默认为通配符匹配 |
- 举例
把String类的字节码文件保存到~/logs/arthas/classdump/目录下
dump java.lang.String
把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去加载指定的类 |
- 举例
默认按类加载器的类型查看统计信息
classloader

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

查看ClassLoader的继承树
classloader -t

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

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

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

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

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


![[ctfshow web入门] web16](https://i-blog.csdnimg.cn/direct/2d6d52a24c8d4b378d4fe16f4c7aab39.png)
















