Arthas的classloader相关命令
sc
作用,查看 JVM 已加载的类信息,“Search-Class” 的简写,这个命令能搜索出所有已经加载到 JVM 中的 Class 信息,sc 默认开启了子类匹配功能,也就是说所有当前类的子类也会被搜索出来,想要精确的匹配,请打开 options disable-sub-class true 开关。
参数说明:
sc demo.MathGame
sc demo.*
sc demo.* -d
sc demo.* -df
sm
作用,查看已加载类的方法信息,“Search-Method” 的简写,这个命令能搜索出所有已经加载了 Class 信息的方法信息。sm 命令只能看到由当前类所声明 (declaring) 的方法,父类则无法看到。
参数说明:
sm demo.*
sm demo.* -d
jad
作用,反编译指定已加载类的源码,jad 命令将 JVM 中实际运行的 class 的 byte code 反编译成 java 代码,在 Arthas Console 上,反编译出来的源码是带语法高亮的,阅读更方便,反编译出来的 java 代码可能会存在语法错误,但不影响你进行阅读理解。
直接反编译一个类:
jad java.lang.String
jad demo.MathGame
反编译时只显示源代码:
jad --source-only demo.MathGame
反编译指定的函数:
jad demo.MathGame main
mc
Memory Compiler / 内存编译器,编译 .java
文件生成 .class
,可自行上传一个 .java 文件上去进行测试:
mc /usr/local/arthas/Test.java -d /usr/local/arthas/
refine
作用,加载外部的 .class
文件,redefine jvm 已加载的类,注意事项,redefine 的 class 不能修改、添加、删除类的 field 和 method,包括方法参数、方法名称及返回值,如果 mc 失败,可以在本地开发环境编译好 class 文件,上传到目标系统,使用 redefine 热加载 class,目前 redefine 和 watch / trace / jad / tt 等命令冲突,以后重新实现 redefine 功能会解决此问题。限制,不允许增加 field / method,正在运行的函数,没有退出不能生效。
把反编译之后的代码存到指定文件当中,将 class 文件编译成 java 源文件:
jad --source-only demo.MathGame > /usr/local/arthas/MathGame.java
打开指定文件,在里面新加入一些代码,编辑文件可以利用 vim 也可以用你个人平时喜欢的编辑方式修改也可以:
System.out.println("while-run");
System.out.println("new Code");
使用 mc 命令对字节码重新编译,将 java 文件编译成 class 文件:
mc /usr/local/arthas/MathGame.java -d /usr/local/arthas
使用 redefne:
redefine /usr/local/arthas/demo/MathGame.class
dump
作用,dump 已加载类的 bytecode 到特定目录:
dump demo.*
dump demo.* -d /usr/local/arthas
classloader
显示所有类加载器信息:
classloader -l
获取某个类加载器所在的 jar 包:
classloader -c hash
获取某个资源所在的 jar 包:
classloader -c hash -r META-INF/MANIFEST.MF
加载某个类到内存当中:
classloader -c hash -load java.lang.String
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具