我找到了许多指向我的答案VirtualMachine#loadAgent
,这真的很棒,除了我在任何地方都没有 VirtualMachine 课程。我也对此感到很困惑,但是我似乎没有任何 Attach API。我正在使用 OpenJDK 8:
$ java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-b05)
OpenJDK 64-Bit Server VM (build 25.222-b05, mixed mode)
还有哪些其他方法可以加载 Java 代理?我正在工作的环境在传递-javaagent:
参数方面几乎没有成功,因为它意味着在运行时被注入到类路径中,显然任何普通用户都不想/有知识来手动更改 JVM 参数对于我的具体程序。
另一方面,为了确保这个类是 OpenJDK 的一部分,因为它不仅仅是为 java 热点 VM 设计的,我从http://hg.openjdk.java.net/下载了 OpenJDK 代码,并找到了 VirtualMachine.java 文件,这意味着它肯定是存在的