Kon*_*che 5 bytecode-manipulation jvmti java-bytecode-asm
如果我想使用字节码检测实现分析器,我应该使用JVMTI编写本机代理还是应该使用该包编写java代理?java.lang.instrument
如果我想使用像ASM这样的库- 如果你想创建一个严肃的探查器似乎是强制性的 - 我必须使用java代理.这使我感到困惑,因为我认为本机代理可以完成Java代理可以做的所有事情.但对我来说,编写java代理似乎更容易.
还有替代品吗?是否应该使用java代理和本地代理组合?
小智 5
几乎每个人都编写一个java代理(使用ASM或BCEL),因为他们不想从头开始编写C/C++字节码工具,因为没有公开可用.
你无法做的是仪器和配置文件/监视原始JVM,访问本机函数需要JNI调用.还有一些JVMTI调用可能对您不可用(如果内存服务).
几年前我用C编写了自己的乐器,我正在编写一个新的乐器,我希望开源(取决于我的邪恶霸主:-))
如果是一个中途的房子,一个单独的预先启动的JVM,你的本地代理发送字节码.在那个JVM中,您可以轻松地编写基于ASM的仪器,并通过线路将生成的字节码发送回本机代理.是的,它似乎有点过于复杂,但编写自己的BCI库更容易.