本次版本主要新增堆内存分析功能、MCP viewfile 工具、watch/trace 等命令支持 ClassLoader 精确匹配等特性。
🚀 新特性 (Features)
1. vmtool 新增堆内存分析功能 (#1915, #3122)
感谢 @yuankong11
新增两个强大的堆内存分析 action:
heapAnalyze - 分析堆内存占用
vmtool --action heapAnalyze --classNum 5 --objectNum 3
$ vmtool --action heapAnalyze --classNum 5 --objectNum 5
class_number: 5367
object_number: 140379
id #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.String
5 5376 605216 java.lang.Class
referenceAnalyze - 分析对象引用链
vmtool --action referenceAnalyze --className java.lang.String --objectNum 5 --backtraceNum 3
$ vmtool --action referenceAnalyze --className demo.MathGame
id #bytes class_name & references
----------------------------------------------------
1 16 demo.MathGame <-- root(local variable in method: main)
2. watch/trace/stack/tt/monitor 支持 ClassLoader Hash (#3120)
所有增强类命令新增 -c/--classloader 参数,支持指定 ClassLoader 精确增强:
sc -d com.example.Foo
watch -c 3d4eac69 com.example.Foo bar '{params,returnObj}'
trace -c 3d4eac69 com.example.Foo bar
stack -c 3d4eac69 com.example.Foo bar
3. MCP 新增 viewfile 工具 (#3121)
MCP Server 新增文件查看工具,支持分段读取大文件:
-
支持 cursor/offset 分段读取,避免一次性返回大量内容
-
支持目录白名单配置(环境变量 ARTHAS_MCP_VIEWFILE_ALLOWED_DIRS)
-
默认允许目录:arthas-output、~/logs/
4. AnsiLog 可配置输出流 (#3128)
5. as-package.sh 支持 --fast 模式
打包脚本新增 --fast 参数,支持快速打包模式,提升开发效率。
🐛 Bug 修复 (Bug Fixes)
1. 修复 MCP 禁用时访问 arthas-output 的空指针异常 (#3127)
修复当 MCP 功能禁用时,访问 arthas-output 目录会抛出 NullPointerException 的问题。
📦 依赖更新 (Dependencies)
🔧 工程改进 (Engineering)
1. 新增 Telnet 停止泄漏集成测试 (#3125)
-
新增 telnet-stop-leak 测试目录
-
包含自动化测试脚本和 expect 脚本
-
新增 GitHub Actions 工作流支持
2. MCP 集成测试增强
3. EnhancerTest 修复与增强