Java – 将java代理注入到运行jvm中

前端之家收集整理的这篇文章主要介绍了Java – 将java代理注入到运行jvm中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
基本上,我正在尝试编写一些列出JVM加载的每个类的东西.我写的是有效的,但它只适用于它运行的jvm.
我精心设计了一个 java代理来动态注入另一个JVM,但后来意识到我实际上并不知道如何注入它.
我如何实际将此代理发送到另一个JVM?
可能吗?

解决方法

动态代理需要声明在目标VM中附加时执行的agentmain(String,Instrumentation)方法.您可以使用tools.jar依赖项,它(仅限 Java 9)仅包含在JDK中,但不包含在JRE中.但是,您可以将代理程序与JDK捆绑在一起,并从那里附加到JVM.

最大的问题是不同的虚拟机API有所不同;但是,您可以使用像byte-buddy-agent这样的库,其中包含不同VM的不同实现.附件将通过以下方式完成:

ByteBuddyAgent.attach("my.jar","my-pid");

这会将my.jar中包含的代理程序附加到具有id my-id的Java进程上.

原文链接:https://www.f2er.com/jvm/126984.html

猜你在找的JVM相关文章