バイトコード インストルメンテーションとは何かを知っています。実行時に .class ファイルのバイトコードを変更するだけで、JDK 1.5 以降で利用できるようです。ただし、正確には実行時ではなく、クラスのロード中にあると言われています。
ここで私の質問は、AOT または Ahead of Time インストルメンテーションとは何ですか? 逆の手続きとは?時間の経過とともに計装?
コードの計測
Quasar ファイバーは、バイトコードの計測に依存しています。これは、 を介したクラスロード時Java Agent
、または Ant タスクを使用したコンパイル時に実行できます。インストルメンテーションの実行
Java AgentQuasar
の軽量スレッド実装は、バイトコード インストルメンテーションに依存しています。インストルメンテーションは、コンパイル時 (詳細は後述) または実行時に Java エージェントを使用して実行できます。Java エージェントを実行するには、次を java コマンドラインに追加する必要があります (または、任意のビルド ツールを使用して、これを JVM 引数として追加します)。
-javaagent:path-to-quasar-jar.jar
Ahead-of-Time (AOT) インストルメンテーション
Quasar を使用してプログラムをインストルメント化する簡単で好ましい方法は、実行時にコードをインストルメント化する Java エージェントを使用することです。ただし、Java エージェントを実行できない場合もあります。Quasar は、Ant タスクによる AOT 計測をサポートしています。タスクは
co.paralleluniverse.fibers.instrument.InstrumentationTask
にありquasar-core.jar
、計測するクラスのファイルセットを受け入れます。すべてのクラスが実際にインスツルメントされるわけではありません –suspendable method
s を持つクラスのみ (以下を参照) – 単純に、プログラム内のすべてのクラス ファイルをタスクに与えます。実際、クエーサー自体は 事前に計測されています。