在java检测中使用agentmain方法有什么用处

时间:2013-11-05 09:54:38

标签: profiling bytecode instrumentation javaagents

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

premain和agentmain方法有相同的用途吗?
调用agentmain方法时?
在java检测中使用agentmain方法有什么用?

1 个答案:

答案 0 :(得分:9)

在应用程序之前启动代理时,将调用

premain。使用premain调用的代理使用 -javaagent 开关指定。

应用程序运行后启动代理时,将调用

agentmain。以agentmain开头的代理可以使用Sun工具API以编程方式附加(仅适用于Sun / Oracle JVM - 引入动态代理的方法取决于实现)。

代理可以同时拥有premainagentmain,但在特定的JVM调用中只会调用其中一个。换句话说,您的代理将以premainagentmain开头,但不能同时开始。

您可以在问题Starting a Java agent after program start的答案中找到有关此内容的更多信息。