当前位置: 首页 > news >正文

02)阿里 Arthas(阿尔萨斯)开源的 Java 诊断工具原理分析、JVM动态加载“代理程序“(Agent) 的机制、vm.loadAgent原理

原理分析

1.Arthas 启动时(java -jar arthas-boot.jar)

Arthas(阿尔萨斯)使用 java -jar arthas-boot.jar 启动时前台启动方式,
这是一个独立的 Java 程序(arthas-boot)。
它会调用 com.sun.tools.attach.VirtualMachine.list() 获取当前系统所有可 attach 的 JVM 进程。
显示列表,等待你选择一个 PID。

2.你输入 PID 后,发生什么?

Arthas 使用 JVM TI(JVM Tool Interface) + Attach API 技术,执行以下操作:

VirtualMachine vm = VirtualMachine.attach("147768");  // attach 到目标 JVM
vm.loadAgent("arthas-agent.jar", "clientPort=3658");  // 注入 agent

这行代码是关键!它把 Arthas 的 agent(arthas-agent.jar)动态加载到目标 JVM 中

3.目标 JVM 内部发生了什么?

当 loadAgent 被调用后,目标 JVM 会执行 arthas-agent.jar 中的 premain 或 agentmain 方法:

public class ArthasAgent {public static void agentmain(String agentArgs, Instrumentation inst)
http://www.dtcms.com/a/395698.html

相关文章:

  • [学习笔记][机器学习-周志华] 第1章 绪论
  • Node.js面试题及详细答案120题(111-120) -- 进阶与扩展篇
  • 鞋底布线前传:CAD三维建模如何实现精准凸起设计
  • 华为无线网络技术基础
  • Django 模型与 ORM 全解析(二):数据库操作
  • Python 2025:AI与自动化运维的融合新纪元
  • MySQL 核心函数与约束详解
  • 设计模式简要
  • 服务扩容与容量评估手册
  • Pyside6 + QML - 信号与槽08 - 一个函数被多个信号触发(带参数)
  • 【第十一章】Python 调用 MySQL 全面指南:从基础到实践​
  • 新手玩家如何使用云手机
  • 【Datawhale组队学习202509】AI硬件与机器人大模型 task02 视觉感知与手眼协调
  • 基础算法---【前缀和】
  • YOLO系统——yolov1工作原理
  • 第20讲 机器学习中的分类数据
  • 《前端学习总结:GitLab、状态管理、组件库与 Umi.js》
  • 【论文阅读】理解世界还是预测未来?—— 世界模型全面综述
  • AR眼镜:远程协作与精准操作的未来之眼
  • 【论文阅读】GR-2:用于机器人操作的生成式视频-语言-动作模型
  • maven GAVP 的含义
  • 【Android】录制视频
  • RK3576-Android15_Usb白名单功能实现篇二
  • Spring中使用Apache Http客户端调第三方系统接口临时查看请求体参数
  • Linux系统-debian系的软件包管理
  • PCB工艺中的深微孔
  • 关于Pycharm中在运行出现语法错误:Non-UTF-8 code starting with
  • 构建AI智能体:四十一、大模型思维链提示工程:技术原理与行业应用案例分析
  • 鸿蒙系统中音视频的采集与播放
  • HTTPS 双向认证抓包实战,原理、难点、工具与可操作的排查流程