2

配列の作成ごとに特定の処理を行う Java アプリケーション用のエージェントを作成する必要があります。これまでのところ、このイベントでコードを実行する方法を見つけることができませんでした。

  1. java.lang.instrument.ClassFileTransformer は「配列クラス」を取得しないため、「配列のコンストラクター」にフックする方法はありません。そして「配列クラスは決して変更できません」
  2. これに対応する JVMTI イベントはありません

助言がありますか?

4

1 に答える 1

3

そのためには、アプリケーションのバイトコードを変更する必要があります。ObjectWeb ASMがこの仕事に最適なツールであることがわかりました。一般的な考え方は次のとおりです。

  1. 関心のあるクラスをインターセプトする JVMTI エージェントを作成します。
  2. 計測するクラスを ASM クラス トランスフォーマーに渡します。
  3. クラス トランスフォーマーでは、ANEWARRAY などの配列の構築に関連する Java オペコードをインターセプトできます (詳細については、JVM 仕様を参照してください)。
于 2011-01-04T12:44:34.587 に答える