
本版本重点引入了堆内存诊断能力、MCP 文件查看工具、以及对 watch/trace 等核心命令的 ClassLoader 精准识别支持等多项重要更新。
? 新增功能 (Features)
1. vmtool 加入堆内存深度分析能力 (#1915, #3122)
致谢 @yuankong11
新增两大实用堆内存诊断操作:
heapAnalyze —— 全面评估堆内存使用状况
vmtool --action heapAnalyze --classNum 5 --objectNum 3
- 以 GC Root 为起点,遍历可达对象,统计各类型实例数及内存占用
- 按内存占比排序,展示占用最高的若干类与对象
- 支持
--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
- 针对指定类的实例,输出内存占用靠前的对象及其完整引用链(从目标对象逐级回溯至 GC Root)
-
--backtraceNum可设定回溯深度(-1 表示直达 root,0 表示仅显示对象不输出引用链)
`$ vmtool --action referenceAnalyze --className demo.MathGameid #bytes class_name & references----------------------------------------------------1 16 demo.MathGame
2. watch/trace/stack/tt/monitor 命令支持 ClassLoader Hash 匹配 (#3120)
所有字节码增强类命令均扩展 -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 显式指定
3. MCP 新增 viewfile 文件浏览工具 (#3121)
MCP Server 新增轻量级文件查看能力,适用于大文件分块读取场景:
-
支持 cursor/offset 分段加载机制,防止一次性返回超大数据阻塞响应
-
提供目录白名单配置(环境变量 ARTHAS_MCP_VIEWFILE_ALLOWED_DIRS)
-
默认开放目录:arthas-output、~/logs/
4. AnsiLog 输出流可定制化 (#3128)
-
AnsiLog 不再强制绑定 System.out,现支持自定义输出流注入
-
便于统一日志管理、重定向或对接第三方日志系统
5. as-package.sh 新增 --fast 快速打包模式
构建脚本增加 --fast 参数,跳过部分非必要校验与优化步骤,显著缩短本地打包耗时。
? 缺陷修复 (Bug Fixes)
1. 修复 MCP 关闭状态下访问 arthas-output 导致的空指针异常 (#3127)
解决在禁用 MCP 功能时,尝试访问 arthas-output 目录引发 NullPointerException 的问题。
? 依赖升级 (Dependencies)
-
将 byte-buddy 升级至 1.18.3 版本
? 工程优化 (Engineering)
1. 新增 Telnet 连接终止泄漏集成测试 (#3125)
-
新增 telnet-stop-leak 测试模块
-
配套自动化测试脚本与 expect 脚本
-
同步接入 GitHub Actions CI 流水线
2. MCP 集成测试能力增强
-
补充 profiler 和 viewfile 工具的端到端集成验证
-
新增 ViewFileToolTest 单元测试用例
3. EnhancerTest 完善与扩展
-
修复原有 EnhancerTest 中存在的稳定性问题
-
新增覆盖 ClassLoader hash 增强逻辑的专项测试
源码获取:立即下载










