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

2023-2-22 -javaagent

周三,天气晴,7度

Java Agent

Java Agent也叫作java探针,可以实现动态修改java字节码,完成额外的功能。在java类编译成字节码,在jvm执行之前,它可以读取修改字节码,以来完成额外的功能。

使用方法:
这里有两种方式指定javaagent:
1)使用命令行:java -javaagent:XXX.jar ddd.jar
2)使用idea的jvm option选项。

应用场景
从静态Instrument-premain()、动态Instrument- agentmain() 字节码转换器的两种执行方式来看,可以实现如下功能:

  • Java Agent 能够在加载 Java 字节码之前进行拦截并对字节码进行修改;
  • List item在 Jvm 运行期间修改已经加载的字节码;

即可实现:
1.在一些框架或是技术的采集点进行字节码修改,对应用进行监控(比如通过JVM CPU Profiler 从CPU、Memory、Thread、Classes、GC等多个方面对程序进行动态分析)
2.对执行指定方法或接口时做一些额外操作,比如打印日志、打印方法执行时间、采集方法的入参和结果等;

Github 上有哪些开源工具、项目使用到了 Agent 技术:

  • 阿里巴巴开源的 Arthas:深受开发者喜爱的Java诊断工具。在线排查问题,无需重启;动态跟踪 Java 代码;实时监控 JVM 状态。
  • 阿里巴巴开源的JVM SandBox:实时、无侵入、动态可插拔的字节码增强框架,可用于线上故障定位、系统流控、动态日志等场景
  • 国内开源的Skywalking : 针对服务的调用链路、JVM 基础监控信息进行采集。 Uber开源的jvm-profiler:通过 JavaAgent 采集 JVM CPU、Memory、IO等指标并发送给 Kafka、Console 以及可以自定义的发送器。
  • sun开源的BTrace:一款java 动态、安全追踪工具,可以不停机的情况下监控线上情况,并且做到最少的侵入,占用最少的系统资源。
http://www.lryc.cn/news/19662.html

相关文章:

  • JavaScript BOM操作
  • 【机器学习 | 强基计划】开山篇 | 机器学习介绍及其类别和概念阐述
  • 华为OD机试真题Java实现【合规数组】真题+解题思路+代码(20222023)
  • BoostSearcher搜索引擎项目
  • 【模拟集成电路】频率综合器(Frequency Synthesizer,FS)设计
  • 实例8:机器人的空间描述和变换仿真
  • 网络 导航
  • Web Spider Ast-Hook 浏览器内存漫游-数据检索
  • 计算机网络笔记、面试八股(二)——HTTP协议
  • docker快速上手使用
  • <c++> 类的构造函数与类的析构函数
  • 华为OD机试真题Java实现【玩牌高手】真题+解题思路+代码(20222023)
  • Hive Sql整体优化思路
  • 【华为OD机试模拟题】用 C++ 实现 - 数组的中心位置(2023.Q1)
  • 取指定数值的地址 (int 转 void *)
  • C#的多线程、线程池和Task
  • Day20【元宇宙的实践构想06】—— 元宇宙与Web3.0
  • 极限熵和冗余度
  • 女生学习大数据专业未来前景怎么样
  • 主题模型实践
  • 按字典序排列的最小的等价字符串[拆解并查集]
  • 操作系统——6.系统调用
  • JavaScript DOM操作
  • 【数据结构】顺序表
  • 【人工智能 AI 】RPA 架构师需要具备的技能有哪些?RPA Solution Architect
  • 【模拟集成电路】鉴频鉴相器设计(Phase Frequency Detector,PFD)
  • 【Linux】进程间通信介绍 | 管道
  • 这次说说腾讯的一场 35K—55K 的 Android 高工面试
  • Jenkins第一讲
  • 变分推断 | MATLAB实现VBMC变分贝叶斯蒙特卡洛模拟的贝叶斯推断