Java Agent探针技术
1、基本概念
Java Agent 是 jdk1.5 引入的特征,此特征为用户提供了在 jvm 将字节码文件读入内存后,jvm 使用对应的字节流在 java 堆中生成 Class 对象之前
,用户可以对字节码进行修改的能力,从而 jvm 使用修改后的字节码创建 Class 对象。
目前只支持冷启动
,热部署方式仍需官方持续改进。
流程图:
2、应用场景
Pinpoint分布式链路
SkyWalking分布式链路
3、实现步骤
- 定义一个 resources/META-INF/MANIFEST.MF 文件,在其中添加 premain-class 配置项。
- 创建 premain-class 配置项指定的类,并在其中实现 premain() 方法,方法签名如下:
public static void premain(String agentArgs, Instrumentation inst){...
}
- 将 MANIFEST.MF 文件和 premain-class 指定的类一起打包成一个 jar 包。
- 使用 -javaagent 指定该 jar 包的路径即可执行其中的 premain() 方法。
4、小案例
1)创建一个代理的jar
github: https://github.com/fomeiherz/agent-example
jar打包:mvn clean package
打包完成后,会在 {base}/target 下生成一个agent.jar ,一会启动会用到。
2)创建测试类
本地任意目录创建文件:App.java
public class App {public static void main(String[] args) {new App().test();}private void test() {System.out.println("hello agent.");}
}
把第1步打包的agent.jar拷贝到App.java文件目录下,然后编译启动。
编译:javac App.java
启动:java -javaagent:agent.jar App
【参考资料】
Java探针-Java Agent技术-阿里面试题
Java Agent探针技术相关推荐
- Java agent 探针技术(1)-JVM 启动时 premain 进行类加载期增强
文章目录 1. 简介 2. 使用 Java agent 的步骤 3. 使用示例 3.1 创建实现 ClassFileTransformer 接口的类 3.2 创建使用 ClassFileTransfo ...
- Java Agent 探针技术
Java 中的 Agent 技术可以让我们无侵入性的去进行代理,最常用于程序调试.热部署.性能诊断分析等场景,现如今比较火热的分布式链路追踪项目Skywalking,就是通过探针技术去捕获日志,将数据 ...
- 深入Java自动化探针技术的原理和实践
转至作者 蒋志伟:深入Java自动化探针技术的原理和实践 前言 建议阅读时间 30~40分钟 读者需要对Java JVM 一定了解,文章会系统的介绍Java 探针核心原理和技术实现,总结目前一些主流的 ...
- 【Java综合专栏】「引领序幕」全链路追踪原理之Java Agent探针的技术介绍(上篇)
前提概要 Java调式.热部署.JVM背后的支持者Java Agent: 各个 Java IDE 的调试功能,例如 eclipse.IntelliJ : 热部署功能,例如 JRebel.XRebel. ...
- 【JAVA基础☞探针技术】Java探针-Java Agent技术
个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 1.原理:基于javaAgent和Java字节码注入技术的java探针工具技术原理 2.原理分析 动态代理功能实现说明,我们利用ja ...
- Java探针技术详解
简介 在JVM中运行中,类是通过classLoader加载.class文件进行生成的.在类加载器加载.class文件生成对应的类对象之前时,我们可以通过修改.class文件内容(就是字节码修改技术), ...
- Java Agent与ASM字节码介绍
Java Agent Java Agent是jdk1.5以后引入的,也叫做Java代理. javaAgent是运行方法之前的拦截器.我们利用javaAgent和ASM字节码技术,在JVM加载class ...
- 探针技术-JavaAgent 和字节码增强技术-Byte Buddy
能够基于Java Agent编写出普通类的代理 理解Byte Buddy的作用 能够基于Byte Buddy编写动态代理 1 Byte Buddy Byte Buddy 是一个代码生成和操作库,用于在 ...
- 一文带你了解Java Agent
转载自 一文带你了解Java Agent Java Agent这个技术,对于大多数同学来说都比较陌生,像个黑盒子.但是多多少少又接触过,实际上,我们平时用的很多工具,都是基于Java Agent实现 ...
最新文章
- 遗传算法中的选择操作
- 花33元租号玩2小时王者荣耀,未成年为绕过防沉迷用上黑科技上号器App
- 如何网络推广浅析网站优化的过程中首页降权了该怎么办?
- linux基础(一)
- 浮动元素的均匀分布和两端对齐
- vs2015软件系统开源_特别版:2015年开源新闻
- maven中scope属性
- 运行github上的Vue项目
- Linux的iovec、readv和writev
- unknown host www.baidu.com 解决方法
- Nginx正向代理原理和部署方案
- 利用tensorflow实现手写体识别
- 马拉车算法详解, C++代码实现
- python算大写字母
- C# 基础学习第四天
- 【算法】网球循环赛比赛日程表
- 学习单片机我们到底在学习什么?
- 诺威健康IPO招股书失效:称将继续录得巨额亏损,TPG持股74.6%
- ad7606中文资料_16位ADC数据采集模块AD7606(原理图、中文数据手册、例程等)
- EMR 上的 Spark 或 Hive 作业失败并出现 HTTP 503 “Slow Down” AmazonS3Exception