本版本重点引入了堆内存诊断能力、MCP 文件查看工具、以及对 watch/trace 等核心命令的 ClassLoader 精准识别支持等多项重要更新。
致谢 @yuankong11
新增两大实用堆内存诊断操作:
heapAnalyze —— 全面评估堆内存使用状况
vmtool --action heapAnalyze --classNum 5 --objectNum 3
--classNum 控制类列表长度,--objectNum 控制对象列表长度$ vmtool --action heapAnalyze --classNum 5 --objectNum 5class_number: 5367object_number: 140379id #bytes class_name----------------------------------------------------1 65552 byte[]2 65552 byte[]3 63024 byte[]4 61032 byte[]5 55736 byte[]id #instances #bytes class_name----------------------------------------------------1 9052 7573224 byte[]2 26045 1721600 char[]3 3204 770376 java.lang.Object[]4 25810 619440 java.lang.String5 5376 605216 java.lang.Class
referenceAnalyze —— 追踪对象引用路径
vmtool --action referenceAnalyze --className java.lang.String --objectNum 5 --backtraceNum 3
--backtraceNum 可设定回溯深度(-1 表示直达 root,0 表示仅显示对象不输出引用链)`$ vmtool --action referenceAnalyze --className demo.MathGameid #bytes class_name & references----------------------------------------------------1 16 demo.MathGame
所有字节码增强类命令均扩展 -c/--classloader 参数,实现基于 ClassLoader 哈希值的精准增强:
sc -d com.example.Foowatch -c 3d4eac69 com.example.Foo bar '{params,returnObj}'trace -c 3d4eac69 com.example.Foo barstack -c 3d4eac69 com.example.Foo bar
有效规避同名类被多个 ClassLoader 加载时产生的增强冲突
建议先执行 sc -d 获取目标 ClassLoader 的哈希值,再通过 -c 显式指定
MCP Server 新增轻量级文件查看能力,适用于大文件分块读取场景:
支持 cursor/offset 分段加载机制,防止一次性返回超大数据阻塞响应
提供目录白名单配置(环境变量 ARTHAS_MCP_VIEWFILE_ALLOWED_DIRS)
默认开放目录:arthas-output、~/logs/
AnsiLog 不再强制绑定 System.out,现支持自定义输出流注入
便于统一日志管理、重定向或对接第三方日志系统

构建脚本增加 --fast 参数,跳过部分非必要校验与优化步骤,显著缩短本地打包耗时。
解决在禁用 MCP 功能时,尝试访问 arthas-output 目录引发 NullPointerException 的问题。
将 byte-buddy 升级至 1.18.3 版本
新增 telnet-stop-leak 测试模块
配套自动化测试脚本与 expect 脚本
同步接入 GitHub Actions CI 流水线
补充 profiler 和 viewfile 工具的端到端集成验证
新增 ViewFileToolTest 单元测试用例
修复原有 EnhancerTest 中存在的稳定性问题
新增覆盖 ClassLoader hash 增强逻辑的专项测试
源码获取:立即下载