JVMTI 虽然提供了操作 JVM 的接口,但是需要通过 agent 对它们进行访问,而 agent 是
要用 C/C++ 写的。所以 Java SE5 中新增了 Instrumention 特性,让开发者可以基于
Java 来开发 agent 程序,用来监测和协助运行在 JVM 上的程序,甚至可以替换和修改某些
类的定义。但是需要程序启动时通过 —javaagent 参数指定代理类
Java SE 6 增强了 instrument 的功能,通过 Java Tool API 中的 attach 方式,我们可
以很方便地在程序运行过程中动态地设置加载代理类,并且可以对 native method 进行
instrumentation
Instrumentation 接口