码迷,mamicode.com
首页 > 编程语言 > 详细

Java探针

时间:2020-06-28 22:23:46      阅读:100      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!