11

-javaagent引数とpremainメソッドを使用して、いくつかの Java バイトコード インストルメンテーションを実行しました。しかし、 agentmainメソッドについて聞いたのはこれが初めてです。この方法についていくつか質問があります。こちらが続きます。

premain メソッドと agentmain メソッドの両方の用途は同じですか?
agentmain メソッドが呼び出されたとき
javaインストルメンテーションでのagentmainメソッドの使用は何ですか?

4

1 に答える 1

14

premainアプリケーションの前にエージェントが開始されたときに呼び出されます。を使用して呼び出されるエージェントは、 -javaagentスイッチpremainで指定されます。

agentmainアプリケーションが既に実行されたにエージェントが開始されたときに呼び出されます。で開始されたエージェントはagentmain、Sun ツール API を使用してプログラムで接続できます (Sun/Oracle JVM のみ -- 動的エージェントを導入する方法は実装に依存します)。

エージェントは と の両方を持つことができますがpremainagentmain特定の JVM 呼び出しで呼び出されるのは 2 つのうちの 1 つだけです。premainつまり、エージェントはまたはのいずれかで始まりますagentmainが、両方ではありません。

これについての詳細は、プログラムの開始後に Java エージェントを開始するという質問への回答を参照してください。

于 2013-11-05T12:35:54.523 に答える