Profiling agentmain方法在java插装中的用途是什么

Profiling agentmain方法在java插装中的用途是什么,profiling,bytecode,instrumentation,javaagents,Profiling,Bytecode,Instrumentation,Javaagents,我使用-javaagent参数和premain方法完成了一些java字节码插装。但这是我第一次听说agentmain方法。我对这种方法有一些疑问。下面是它。 premain和agentmain方法都有相同的用途? 何时调用agentmain方法? java instrumentation中agentmain方法的用途是什么?premain在应用程序之前启动代理时被调用。使用premain调用的代理使用-javaagent开关指定 agentmain在应用程序运行后启动代理时调用。以agentma

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

premain和agentmain方法都有相同的用途?
何时调用agentmain方法?

java instrumentation中agentmain方法的用途是什么?

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

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

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

您可以在问题的答案中找到有关此问题的更多信息。

显示了一个示例应用程序,该应用程序通过attach API在运行的JVM中启动代理。在本例中,如果JMX代理尚未运行,它将启动该代理。因此,它的
agentmain
方法将被调用。这可以适用于其他代理。解释
premain
agentmain
的含义。