2011-06-22 6 views
0
にしたmethodEntry/MethodExit内

をjオブジェクトを取得するには、メソッドのエントリまたはメソッド終了イベントがトリガされたときに、現在のjオブジェクトを取得することは可能ですか?私は、特定の方法で入力されjobjectsをタグ付けしたいと思います。現在、クラスを定義しているメソッドのみを取得できますが、オブジェクトは取得できません。はJVMTI

JVMTI APIで、私は似何かを見つけることはありません。

ヒープ内のメソッド定義クラスのすべてのインスタンスを繰り返し処理できますが、これはメソッドが呼び出されたオブジェクトに関する情報を私に与えません。

答えて

0

BCIを使用して、JVMTIに付属のheapProfilerの例に示すように、エージェントにJNI呼び出しを挿入します。メソッド(1)にパラメータとしてオブジェクトを渡すことができます。この方法では、すべてのメソッド呼び出しを聴く必要はありません。

MethodEntryイベントは静的メソッドとネイティブメソッドで発生するため、インスタンスオブジェクトを含めるのは妥当ではありません。さらに、JVMTIはそのひどいパフォーマンスのためにMethodEntryの使用を控えます。

実際にMethodEntryを使用する必要がある場合は、オブジェクトをローカル変数(GetLocalObject)にアクセスして取得できます。スロット0になければなりません(ローカル変数テーブルを使用して確認してください)。


は、(1)あなたは初期化されていないオブジェクトにアクセスすることはできませんので、あなたはコンストラクタメソッドをプロファイリングしている場合super後、あなたの呼び出しを挿入する必要があります。

関連する問題