运行时类的重载
运行时类的重载
      如果我们在一个JVM中，先加载了一个类，然后又对其进行字节码增强并重新加载会发生什么呢？
      会发现它是在最后调用了ClassLoader的native方法defineClass()时报错。
      也就是说，JVM是不允许在运行时动态重载一个类的。
      如何在一个持续运行并已经加载了所有类的JVM中，
        还能利用字节码增强技术对其中的类行为做替换并重新加载？
    Instrument
        instrument是JVM提供的一个可以修改已加载类的类库，专门为Java语言编写的插桩服务提供支持。
        它需要依赖JVMTI的Attach API机制实现
        在JDK 1.6以前，instrument只能在JVM刚启动开始加载类时生效，而在JDK 1.6之后，instrument支持了在运行时对类定义的修改。
        要使用instrument的类修改功能，我们需要实现它提供的ClassFileTransformer接口，定义一个类文件转换器。
        接口中的transform()方法会在类文件被加载时调用，而在transform方法里，我们可以利用上文中的ASM或Javassist对传入的字节码进行改写或替换，生成新的字节码数组后返回。
    JVMTI & Agent & Attach API