Instrumentation 介绍与使用

实战 Java 并发编程
实战为导向,从Java 并发原理出发,并集合开发实践,全面剖析 Java 并发编程。
wangxiaoming

 

 

使用 Insrumentation ,开发者而言构建一个独立于应用程序的代理程序(Agent),检车和协助运行在JVM 上的程序,甚至可以替换和修改某些类的定义。简单的来说 开发者使用Instrumentation 可以实现一种虚拟机级别的AOP实现。

Instrumentation 的最大作用,就是类定义动态改变和操作。 程序运行时,通过 -javaagent 参数指定一个特定的 jar 文件来启动  Instrumentation 的代理程序。 其实这个对很多人来说不陌生 xmind, idea 永久破解的过程中,都有使用  -javaaegent ,然后指定一个 jar 文件。甚至一些监控软件也用了,例如 skywalking。

看看怎么用

java.lang.instrument 包的具体实现。

做个代理类

import java.lang.instrument.Instrumentation;

public class Agent {
    /**
     * 编写一个 Java 类 包含
     * public static void premain(String agentArgs, Instrumentation inst);  [1]
     * public static void premain(String agentArgs); [2]
     * @param options
     * @param ins
     */
    public static void premain(String options, Instrumentation ins) {
        if (options != null) {
            System.out.printf("  I've been called with options: \"%s\"\n", options);
        }
        else {
            System.out.println("  I've been called with no
wangxiaoming CSDN认证博客专家 架构 Spring Boot Redis
博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付19.89元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值