在我的程序中的某个时刻,我需要初始类文件字节(在应用任何转换之前描述类的字节)。到目前为止我评估的方法是:
使用相应的类加载器获取资源,然后再次加载字节数组。这不适用于动态生成的类(ASM,代理等)。
在ClassFileTransformer中存储对初始类文件字节的引用。虽然这有效,但这意味着我需要主动存储所有类的所有字节数组,以防我稍后需要其中一些。不冷静。
与上面几乎相同但使用JVMTIs ClassFileLoadHook。问题与ClassFileTransformer相同。
我检查了调用Instrumentation.retransformClasses时发生了什么。最后,这归结为需要instanceKlassHandles获取类文件字节的本机方法。所以我也无法真正获取(至少我不知道如何)。
关于如何获取初始类文件字节而不预先存储对所有类的字节的引用的任何其他想法?