マラソン:
背景:Javaは基本的にあなたが設定した接頭辞でネイティブメソッドの名前を変更して、バイトコードでそれに委譲し、そのメソッドを作成できるようにすることで、ネイティブメソッドを計測するための機構を有しています。
これは禁止され、デフォルトで表示されます。呼び出しInstrumentation.setNativePrefix()
を実行するに上のチェックInstrumentationImpl.mEnvironmentSupportsNativeMethodPrefix
、私は「偽」にJVM Cコードのデフォルトで参照してください。
私はそこJVMTIを経由してネイティブエージェントでそれを有効にする方法はおそらくですが、私は、Java言語のエージェントでそれを有効にする方法について何かを見つけることができません参照してください。
ホルガー:
で指定されたJavaのエージェントに必要な機能は、そのJARファイルのマニフェスト属性によって決定されたパッケージのドキュメントの下:
マニフェスト属性
次のマニフェストの属性は、エージェントJARファイル用に定義されています。
...
- CAN-セットネイティブメソッド・プレフィックス
ブール(true
またはfalse
、ケース無関係)。このエージェントが必要とするネイティブメソッドの接頭辞を設定する機能があります。以外の値true
と考えられていますfalse
。この属性はオプションであり、デフォルトはありますfalse
。
私は、ネイティブメソッドの接頭辞と特異的にそれをしようとしなかったが、私はでサポートされているとして、彼らが唯一報告されていることを、他の機能(再定義と再変換)から知っているInstrumentation
インターフェイス以前のマニフェスト属性を経由して要求されたとき。機能を要求する任意のスタートアップ時剤の非存在下であっても、それは不可能アタッチAPIを介してロードされたエージェントが、後でオン機能を要求することがあります。