Java探针

2021-05-02 04:29

阅读:487

标签:size   一个   加载   www   ati   详解   art   指定   必须   

一、场景


JavaAgent Java代理,又叫java探针,可以动态的改变加载的字节码文件

通常使用ASM Javasist字节码工具修改class文件

 

二、使用


2种方式

静态方式: 通过-javaagent 指定代理类 (在main方法执行前执行premain方法)

动态方法:通过额外的进程attach到指定的java进程中(agentMain)

具体使用不详解 (JVM级别的AOP)

 

三、常用接口


加载前修改class

Instrumentation.addTransformer

 

加载后修改class

Instrumentation.redefineClasses

限制:

  • 父类是同一个
  • 实现的接口数也要相同,并且是相同的接口
  • 类访问符必须一致
  • 字段数和字段名要一致
  • 新增的方法必须是 private static/final 的
  • 可以删除修改方法

参考:https://www.infoq.cn/article/javaagent-illustrated

Java探针

标签:size   一个   加载   www   ati   详解   art   指定   必须   

原文地址:https://www.cnblogs.com/yangfei629/p/13205223.html


评论


亲,登录后才可以留言!