4

基本的な質問:JVMは、JVMのプロファイリングとデバッグのためのネイティブAPIであるJVMTIを提供します。JVMインストルメンテーションも同じことを行います(それは正しいですか?)。はいの場合、両方の違いは何ですか?

4

3 に答える 3

3

InstrumentationがJVMTIであるとは思いません。これらは両方とも独立して使用できるためです。

JVMTIはイベントに基づいており、イベントハンドラーで、JVMに関する必要な情報を取得できます。

インストルメンテーションとは、バイトコードを変更し、実行時にクラス内の必要な場所にコードを追加してから、JVMにロードするものです。この余分なコードを実行すると、プロファイラーに必要な情報を収集するのに役立ちます。

インストルメンテーションは、ASMのようなさまざまなサードパーティのjarファイルを使用して実現できます。

私の知識と経験によると、これらは両方ともJavaプロファイリング用であり、ネイティブプロファイリング用ではありません。

おそらく、理解を深めるために、より多くのドキュメントを読み、さまざまなサンプルを試す必要があります。

于 2011-06-17T12:54:46.507 に答える
0

JVMTIは、デバッガーが必要とするすべての機能を提供しますが、JVMTIが提供する以上の機能が必要な場合は、インストルメンテーションを使用する必要があります。

于 2011-06-15T09:41:32.907 に答える
0

JVMTIは、デバッグ、プロファイリングなどのあらゆる種類のイベントを提供する基本機能です。JVMTIが提供する領域の1つは、クラスのインターセプト(および再定義)へのアクセスです。java.lang.instrumentは、JVMTI上にあるJavaラッパーであり、クラスのロードイベントを取得するための優れた、簡単でアクセス可能な方法を提供します。

JVMTIをjava.lang.instrumentの純粋なスーパーセットと考えてください。ただし、ユーザーはCコードを記述する必要があります。

于 2011-06-15T13:22:20.023 に答える