转:javaagent 参数使用

使用-javaagent 参数用户可以在执行main函数前执行一些其他逻辑(类似aop),甚至可以动态的修改替换类中代码。

 

举例说明:我们想把如下程序中的6改为7

public class HelloWorld {
    public static void main(String arg[]) {
        System.out.println("The number six is 6");
    }
}
 
import java.lang.instrument.Instrumentation;

public class MySimpleAgent {
    public static void premain(String agentArgs,Instrumentation inst) {
        inst.addTransformer(new MySimpleTransformer());
    }
}
 
import java.lang.instrument.ClassFileTransformer;
import java.lang.instrument.IllegalClassFormatException;
import java.security.ProtectionDomain;

public class MySimpleTransformer implements ClassFileTransformer {
    public byte[] transform(ClassLoader classloader,
                            String classname,
                            Class redefinedclass,
                            ProtectionDomain protectiondomain,
                            byte b[]) throws IllegalClassFormatException {
        if(!classname.endsWith("HelloWorld"))
            return(null);

        String line = "";
        for(int i=0; i < b.length;i++){        
            line += Byte.toString(b[i]) + " ";
            if(line.length() > 60) {
                System.out.println(line);
                line = "";
            }
            if(b[i] == (byte)'6')
                b[i] = (byte)'7';
        }
        System.out.println(line);
        System.out.println("The number of bytes in HelloWorld: " + b.length);
        return(b);
    }
}

 javac *.java 2>&1 | more
jar -cfm MyAgent.jar agentmantext MySimpleAgent.class MySimpleTransformer.class
其中的agentmantext的内容如下:
Premain-Class: MySimpleAgent
而运行方法则如下:
java -javaagent:MyAgent.jar HelloWorld

Open3D 基于法线的双边滤波 基于法线的双边滤波是一种用于点云平滑的技术,它结合了点与其邻域点之间的几何距离和法线方向的相似性,从而在去除噪声的同时保留几何特征。这种滤波方法广泛应用于点云处理领域,尤其是在需要保留表面细节和边缘的场景中。 阅读详情

相关推荐

G2O (General Graph Optimization)入门及简单使用

g2o全称是General Graph Optimization,也就是图优化,我们在做SLAM后端或者更加常见的任何优化问题(曲线拟合)都可以使用G2O进行处理。

晓晨的博客 1万+

使用javaagent实现代码无入侵增强logback

前言 增强logback Web拦截器配置 编写javaagent程序 制作javaagent包 测试 总结 前言     程序运行日志对于系统问题排查,业务监控等都是十分重要的,Java记录日志大多通过logback,log4j等框架实现,我之前根据公司的日志规范封装了一个日志插件包,系统需要集成工具包并按照日志打印规范进行日志打印,运维系统使用filebeat收集日志到ES,开发通过ELK(ES,logstah,kibana)查看日志。但是某些很老旧且庞大的系统并没有集成日志工.

qq_31279701的博客 1866

从零到一:树莓派OpenWrt squashfs固件扩容背后的文件系统魔法

本文深入解析树莓派OpenWrt系统中squashfs固件的扩容原理与操作。通过理解squashfs与overlayfs的协同机制,掌握分区调整和文件系统扩容技巧,解决存储空间限制问题,提升设备可用性。

hadoop5ranger的博客 1038

javaAgent 参数

-javaagent 这个JVM参数是JDK 5引进的. Java-help的帮助里面写道: -javaagent:<jarpath>[=<options>] load Java programming language agent, see java.lang.instrument JDK 工具文档里面,并没有很详细的说明。 1.代理 (agent) 是...

weixin_30347009的博客 608

Nacos 2.3.2实战:5分钟搞定达梦数据库插件配置(含避坑指南)

本文详细介绍了在Nacos 2.3.2中配置达梦数据库数据源插件的完整实战流程。通过解析SPI插件机制,提供从环境准备、插件编译部署到核心配置的逐步指南,并重点分享了驱动加载、SQL兼容性等高频问题的避坑解决方案,助力开发者高效完成国产化数据库适配。

weixin_29200485的博客 499

Cadence IC618版图DRC验证License报错排查:从虚拟机网络配置到HOSTID的实战解析

本文详细解析了Cadence IC618版图设计中DRC验证License报错的排查方法,重点从虚拟机网络配置到HOSTID获取的实战经验。通过对比ifconfig与ip add命令的差异,提供了正确的HOSTID获取方式及License文件修改技巧,帮助工程师快速解决IC618环境下的DRC验证问题。

weixin_30823001的博客 680

jmx_exporter源码分析

引文 Jmx_exporter是以代理的形式收集目标应用的jmx指标,这样做的好处在于无需对目标应用做任何的改动。 使用方法: -javaagent:/path/to/JavaAgent.jar=[host:]: JavaAgent.jar 就是jmx_exporter的jar包 [host:] 就是目标应用所在的地址和端口 &lt;yaml configuration file&gt; 是配...

qqqq0199181的博客 5488

基于自适应小波阈值算法的图像去噪

自适应小波阈值算法是一种基于小波变换的方法,它相对于传统的小波阈值去噪方法具有更好的性能和鲁棒性。该算法首先对图像进行小波变换,然后根据小波系数的大小确定一个自适应的阈值,将小波系数与阈值进行比较,大于阈值的系数被保留,小于阈值的系数被置零。在上述代码中,首先选取了小波函数sym4进行小波分解,然后根据标准差计算出阈值,使用wthresh函数进行阈值处理,最后进行反变换得到处理后的图像。该GUI界面与前面的自适应小波阈值算法代码结合,实现了图像的去噪,并提供了可视化的效果。

与其临渊羡鱼,不如退而结网 559

Javaagent使用指南

JVM启动前静态Instrument Javaagent是什么? Javaagent是java命令的一个参数。参数javaagent可以用于指定一个jar包,并且对该java包有2个要求: 这个jar包的MANIFEST.MF文件必须指定Premain-Class项。 Premain-Class指定的那个类必须实现premain()方法。 premain 方法,从字面上理解,就是运行在 main 函数之前的的类。当Java虚拟机启动时,在执行 main 函数之前,JVM会先运行-javaagent所指定

qq_31279701的博客 1万+

TVS 管击穿电压与钳位电压的工程解析

TVS二极管的核心参数击穿电压(VBR)和钳位电压(VC)常被混淆,但二者具有本质区别。VBR是

硬核科技 480

10、现代统计方法:趋势面分析、薄板样条与广义线性模型

本文系统介绍了空间预测建模中的三种现代统计方法:趋势面分析(TSA)、薄板样条(TPS)和广义线性模型(GLM)。详细阐述了每种方法的原理、实现步骤、参数优化与预测评估,并结合R语言代码示例展示了在实际数据中的应用。文章还提供了方法对比流程图与土壤湿度预测案例,帮助读者根据数据特征选择合适模型,提升空间预测的准确性与可靠性。

play7的博客 157

日常记录:java启动参数 -javaagent的使用,应用启动前添加代理包并且注册Mbean

java启动参数 -javaagent的使用,应用启动前添加代理包并且在premain里面注册Mbean。

qq_16430873的博客 6635

OpenClaw 多机器人多 Agent 模式:打造你的 AI 助手团队

OpenClaw多Agent模式为企业提供高效的AI助手团队解决方案。通过创建4个独立的飞书机器人(主助理、内容创作、技术开发、AI资讯),每个连接专属Gateway和Agent模型(如Claude Opus/Sonnet、Gemini 2.5),实现专业分工。相比单Agent模式,多Gateway架构具有配置清晰、互不干扰、无需手动切换等优势。系统采用Profile隔离机制,各Agent拥有独立配置和端口。部署过程包括创建机器人应用、配置Agent、运行自动化脚本等步骤,支持私聊或群组@使用。日常提供状态

Maynor的博客 5101

构建自己的监测器【2】-javaagent参数使用(转)

javaAgent  javaAgent是从JDK1.5及以后引入的,在1.5之前无法使用,也可以叫做java代理。 1. 代理 (agent) 是在你的main方法前的一个拦截器 (interceptor),也就是在main方法执行之前,执行agent的代码。 agent的代码与你的main方法在同一个JVM中运行,并被同一个system classloader装载,被同一的安全策略...

summer85的博客 294

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JavaRebel 关于 noverify 和 javaagent 参数的使用

一般情况下,使用 JavaRebel 时都配置两个 JVM 参数:-noverify 和 -javaagent 一、-javaagent 参数 这个参数是 JDK5 引入的,可以通过 java -h 查看其帮助信息 // 省略 -javaagent:[=] load Java programming language agent, see java.lang.instrument ...

可以通过 ezerg.com 访问 2775

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

javaagent使用

是在JDK1.5以后引入的,它能够在不影响正常编译的情况下修改字节码,相当于是在main方法执行之前的拦截器,也叫premain,也就是会先执行premain方法然后再执行main方法。JDK 1.6后引入了agentmain模式,同样提供了一个agentmain方法,可以在main方法执行之后运行。方法将我们的jar包注入到对应的进程当中,然后被注入的进程就好调用jar包里的。可以看到,我们的agentmain方法的代理已经生效,其中。包含agentmain方法的类(类的全路径名)

zhangyifang_009的博客 1652

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

javaagent实现机制与使用

javaagent实现机制与使用一、javaagent实现机制与使用 一、javaagent实现机制与使用 这里的采集过程即为埋点,埋点的方式有: 硬编码埋点捕捉 AOP埋点捕捉 公共组件埋点捕捉 字节码插桩捕捉 前面三种方试虽然简单但对系统造成了侵入,系统规模过大时并不可取,所以我们重点研究第四种方式。 字节码插桩 我们知道JVM是不能直接执行.java 代码 也不能直接执行.class文件...

Art Tadpole 4735

javaagent使用指南

今天打算写一下 Javaagent,一开始我对它的概念也比较陌生,后来在别人口中听到 字节码插桩,bTrace,Arthas后面才逐渐了解到Java还提供了这么个工具。 JVM启动前静态Instrument Javaagent 是什么? Javaagent是java命令的一个参数。参数 javaagent 可以用于指定一个 jar 包,并且对该 java 包有2个要求: 这个 jar 包的 MA...

rickiyang的博客 3230

javaagent 使用指南

文章目录JVM 启动前静态 InstrumentJVM 启动后动态 Instrument[#](#3747963506)instrument 原理[#](#1765324936)启动时加载 instrument agent 过程:运行时加载 instrument agent 过程:Instrumentation 的局限性[#](#784633017) 今天打算写一下 Javaagent,一开始我对它的概念也比较陌生,后来在别人口中听到 字节码插桩,bTrace,Arthas后面才逐渐了解到 Java 还提供

编码行者的博客 1919

Java探针--javaagent--使用/实例

本文用示例介绍javaagent的用法。

IT利刃出鞘的博客 2万+

JavaAgent的使用总结

Java Agent出现在JDK1.5版本以后,它允许程序员利用agent技术构建一个独立于应用程序的代理程序,用途也非常广泛,可以协助监测、运行、甚至替换其他JVM上的程序,先从下面这张图直观的看一下它都被应用在哪些场景: ...

Harry的博客 4368

javaagent,idea中对javaagent的运用

如上图所示,平时我们在IDEA中随便写一个类,写上一个测试方法,然后点那个三角符号就会成功运行,如下图: 并且点击那个红色正方形按钮程序就会停止,这是怎么实现的呢? 经查看,程序运行界面有一行命令: 把它复制下来,看下: 好乱,整理下: 显而易见,原来是调用了java.exe来运行com.dengbin.socket.TestThread这个类的main方法。 然...

ab411919134的专栏 1万+

javaagent

javaagent Javaagent 是什么 Javaagent是java命令的一个参数。参数 javaagent 可以用于指定一个 jar 包,并且对该 java 包有2个要求: 这个 jar 包的 MANIFEST.MF 文件必须指定 Premain-Class 项。 Premain-Class 指定的那个类必须实现 premain() 方法。 premain 方法,从...

Frankltf的博客 483

Java:javaagent

不同于于我们之前使用-Djava.library.path 指定其它的非Java类包用于实现JNIjavaagent本身就是命令的一个选项,用于Java类在加载前,做一些不可告人的事情cuiyaonan2000@163.com,这里所说的不可告人的事情其实就是:字节码插桩字节码插桩 听起来似乎很高大上的样子,实际上就是在Java应用启动加载类前通过某种机制在执行的字节码实现嵌入代码片段或者修改字节码的操作。...

难得糊涂 1736

什么是JavaAgent?

JavaAgent是在JDK5之后提供的新特性,故名思义也可以叫java代理.他不是应用程序中的一部分,instrument支持以Java代理的形式监控或重新定义运行中的服务.可以让我们在不修改程序代码的前提下通过Instrumentation API改变运行中的java程序. 代码演示 1、创建agent public class MyAgent { // premain是javaagent的入口 public static void premain(String agentArgs, Inst

qq_40708942的博客 1万+
上一篇: 转:JVM内存参数详解以及配置调优
下一篇: 转:java WeakReference SoftReference and PhatomReference 介绍
iteye_19890
博客等级 码龄8年 0粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值