首页  

Java字节码增强简介     所属分类 java 浏览量 1009
字节码 查看工具 jclasslib
https://bintray.com/ingokegel/generic/jclasslib/view
org.gjt.jclasslib.browser.BrowserApplication


ASM
Cglib 基于ASM 

ASM API

ASM Core API
流式处理字节码文件
ClassReader 
ClassWriter 
Visitor   MethodVisitor FieldVisitor AnnotationVisitor  AOP重点使用MethodVisitor

ASM Tree API
把整个类的结构读取到内存中
用Node来映射字节码的各个区域


ASM 在指令层次上操作字节码
Javassist   源代码层次操作字节码
ClassPool CtClass CtMethod CtField

CtClass(compile-time class)
编译时类信息,它是一个Class文件在代码中的抽象表现形式,可以通过一个类的全限定名来获取一个CtClass对象,用来表示这个类文件

ClassPool
ClassPool是保存CtClass信息的HashTable,Key为类名,Value为类名对应的CtClass对象
对某个pool.getCtClass("className") 从pool中获取相应的CtClass 

Instrument

JDK 1.6 之前,Instrument只能在JVM启动加载类时生效
JDK 1.6 之后,Instrument支持运行时修改类
ClassFileTransformer接口
transform()方法在类被加载时调用,利用ASM或Javassist对传入的字节码进行改写或替换,生成新的字节码数组后返回

借助Agent将Instrument注入到JVM中


btrace  利用Instrument,无侵入地跟踪一个正在运行的JVM,监控类和方法级别的状态信息



javaagent机制 javaagent两种加载方式及实例 java agent 简单例子 java debug 原理简介 arthas原理简介 jvm外挂工具揭秘

上一篇     下一篇
Linux常用命令汇总

Java类加载过程

2020热词中英文

JDK CGLIB Javassist ASM 动态代理 比较

SpringBoot异步任务 @Async

groovy实例