Arthas 的进程模型

Arthas 的进程模型

Arthas 本身是一个基于 Java Agent 机制的诊断工具,它的运行分为两个关键环节,但并非 "两个独立进程":

  • 主控端(CLI) :你在终端输入命令的 Arthas 客户端(arthas-boot.jar 启动的进程),本质是一个 Java 进程,负责接收你的命令、解析并发送到目标进程。
  • 代理端(Tools) :通过 VirtualMachine.attach() 动态附加到目标 Java 进程的 Agent 代理(核心是 arthas-core.jar),它运行在目标进程的内部,而非独立进程。

简单说:

  • CLI 是独立的 "控制进程";
  • Tools/Agent 是嵌入目标进程的 "代理线程 / 模块";
  • 二者通过 Socket 通信,并非两个对等的独立进程。

2. "合并到一个 JAR 包" 的本质

Arthas 把 arthas-core.jar(代理逻辑)、arthas-cli.jar(命令行交互)、依赖库等打包到 arthas-boot.jar 中,目的是:

  • 简化部署:用户只需下载一个 JAR 就能使用所有功能;
  • 自动分发:启动时 arthas-boot.jar 会自动把内部的 Agent 包注入目标进程,无需手动拆分 JAR。

这个 "合并" 只是打包层面的整合,运行时依然是 "主控进程 + 目标进程内的 Agent 模块" 的模式。

3. 关键区别:进程 vs 线程

表格

组件 运行载体 角色
Arthas CLI 独立 Java 进程 命令输入 / 解析 / 结果展示
Arthas Agent 目标 Java 进程的内部线程 执行诊断逻辑(监控 / 反编译等)

总结

  1. Arthas 不是 "两个进程",而是一个主控进程 + 目标进程内的 Agent 模块
  2. "CLI 和 Tools 合并到一个 JAR" 是打包优化,方便使用,不改变运行时的进程模型;
  3. Agent 核心逻辑运行在目标进程内部,而非独立进程,这也是 Java Agent 的核心特性。
相关推荐
腻害兔8 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社9 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
2501_916008899 小时前
iOS应用开发工具全面解析:如何选择与优化开发效率
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
萧瑟余晖10 小时前
JDK 26 新特性详解
java·开发语言
马优晨10 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
维天说13 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
Zane199414 小时前
并发 vs 并行:别再傻傻分不清了,一文讲透 Java 并发编程的第一课
java·后端
噢,我明白了14 小时前
java中Excel的导入和导出(EasyExcel)
java·开发语言·excel
吠品15 小时前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库
啊湘15 小时前
天气查询API接口 按月Token鉴权 实时天气 物联网可用 文档齐全
java·后端·struts