我使用-javaagent参数和premain方法完成了一些 java 字节码检测。但这是我第一次听说agentmain方法。我对这种方法有一些疑问。下面跟着它。
premain 和 agentmain 方法有相同的用途吗?
何时调用 agentmain 方法?
java Instrumentation中agentmain方法的用途是什么?
我使用-javaagent参数和premain方法完成了一些 java 字节码检测。但这是我第一次听说agentmain方法。我对这种方法有一些疑问。下面跟着它。
premain 和 agentmain 方法有相同的用途吗?
何时调用 agentmain 方法?
java Instrumentation中agentmain方法的用途是什么?
premain
在应用程序之前启动代理时调用。使用-javaagent开关premain
指定调用的代理。
agentmain
在应用程序已经运行后启动代理时调用。代理agentmain
可以使用 Sun 工具 API 以编程方式连接(仅适用于 Sun/Oracle JVM——引入动态代理的方法取决于实现)。
代理可以同时具有 apremain
和 a agentmain
,但在特定的 JVM 调用中只会调用这两者中的一个。换句话说,您的代理将以 或 开头premain
,agentmain
但不能同时以两者开头。
您可以在对“程序启动后启动 Java 代理”问题的回答中找到有关此的更多信息。