ClassFileTransformer: 定义了类加载前的预处理类;
Instrumentation: 增强器
(1)add/removeTransformer: 添加 / 删除 ClasFileTransformer;
(2)retransformerClasses: 指定哪些类, 在已加载的情况下, 重新进行转换处理, 即触发重新加载类定义; 对于重新加载的类不能修改旧有的类声明, 比如: 不能增加属性, 不能修改方法声明等;
(3)redefineClasses: 指定哪些类, 触发重新加载类定义, 与上面不同的是不会重新进行转换处理, 而是把处理结果 bytecode 直接给 JVM;
(4)getAllLoadedClasses: 获取当前已加载的 Class 集合;
(5)getInitiatedClasses: 获取由某个特定 ClassLoader 加载的类定义;
(6)getObjectSize: 获得一个对象占用的空间大小;
(7)appendToBootstrapClassLoaderSearch/appentToSystemClassLoaderSearch: 增加 BootstrapClassLoader/SystemClassLoader 搜索路径;
(8)isNativeMethodPrefixSupported/SetNativeMethodPrefix: 判断 JVM 是否支持拦截 Native Method;
来源: https://juejin.im/post/5ad5ac7351882555784e7667