1

特定のオブジェクトのサイズを測定するための簡単なライブラリを作成しました。ライブラリには、Java クラスから JNI を介してアクセスします。ホットスポット用に特別に設計されているため、JVMTI を使用して を呼び出しますGetObjectSize

私の質問は、より良い解決策は何ですか?

  1. System.load("library")または を使用してライブラリをロードするには

  2. ライブラリをエージェントとして設定し、agent オプションを指定して java コマンドを発行して明示的にロードします。

これまでに見た同様の例はすべて、エージェント関数を使用しています。

ライブラリをロードするよりも効率的な方法は何ですか?

ありがとう!

4

1 に答える 1

0

コマンドラインインジェクションの利点は、エージェントが仮想マシンと一緒にロードされることです。プログラムを変更せずに、すべてのJavaプログラムにエージェントを注入できます。これによりSystem.load、呼び出しの時点でこれが行われます。たとえば、VM初期化イベントがあるなど、より大きなコールバックのセットに対応できます。あなたがSystem.loadそのイベントを使用する場合は過ぎ去りました。

結果として、コマンドラインインジェクションを使用することは、特定の方法でそれほど効率的ではなく、一部のユースケースではより効果的であると私は信じています。

于 2013-01-29T12:13:37.920 に答える