首页 > 编程语言 > 详细

Java探针

时间:2020-06-28 22:51:00      阅读:74      评论:0      收藏:0      [点我收藏+]

一、场景


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探针

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!