0

javaagent を使用して Java アプリケーションのプロファイリングを行っています。しかし、JDK 7 がスタック マップ フレームで実行されるチェックを強化したことがわかりました。これにより、これらの変更を認識しないツールによってバイトコードが変更された場合に VerifyError 例外が発生する可能性があります。-XX:-UseSplitVerifier" スイッチを使用して、ベリファイアを JDK 6 バージョンに戻すことができます。しかし、javaagent を使用しない Java アプリケーションの実行時間は、javaagent によって実行される同じ Java アプリケーションよりも比較的短いことがわかりました。他の方法はありますか? profile? JVMTI はより良いオプションを提供しますが、ネイティブ (c、c++) 言語はあまり得意ではありません。

4

2 に答える 2

3

Oracle jdkに含まれているjvisualvmを試すことができます

(JDK バージョン 6 を使用している場合は、7 以上に更新してください)

しかし、javaagent を使用しない Java アプリケーションの実行時間は、javaagent によって実行される同じ Java アプリケーションよりも比較的短いことがわかりました。

プロファイラーにはある程度のオーバーヘッドがあります (何かを実行している場合は、CPU とメモリ自体を使用する必要があります)。

于 2013-03-14T08:52:07.613 に答える