11

我使用-javaagent参数和premain方法完成了一些 java 字节码检测。但这是我第一次听说agentmain方法。我对这种方法有一些疑问。下面跟着它。

premain 和 agentmain 方法有相同的用途吗?
何时调用 agentmain 方法?
java Instrumentation中agentmain方法的用途是什么?

4

1 回答 1

14

premain在应用程序之前启动代理时调用。使用-javaagent开关premain指定调用的代理。

agentmain在应用程序已经运行启动代理时调用。代理agentmain可以使用 Sun 工具 API 以编程方式连接(仅适用于 Sun/Oracle JVM——引入动态代理的方法取决于实现)。

代理可以同时具有 apremain和 a agentmain,但在特定的 JVM 调用中只会调用这两者中的一个。换句话说,您的代理将以 或 开头premainagentmain但不能同时以两者开头。

您可以在对“程序启动后启动 Java 代理”问题的回答中找到有关此的更多信息。

于 2013-11-05T12:35:54.523 回答