2011-10-22 11 views
8

特定の実行時条件が満たされたときにJavaアプリケーションを選択的に監視/プロファイルしようとしています。私はすでにHotSpotDiagnosticMXBeanを使ってヒープをダンプすることができます。これは非常に便利です。プログラムでJava HPROFプロファイラを起動する

私は現在、特定のコードパスをより効果的にターゲットにしたいと考えて、CPUプロファイリングと同様のことをしようとしています。私はHPROF interfaceコマンドラインとNetBeansプロファイラの経験がありますが、どちらも事前に起動する必要があります。

実行中のアプリケーションからプログラムでHPROFプロファイラをアクティブにする方法はありますか?私は自由にプロファイリングプロセスを開始して停止することができます。

答えて

1

JVMTI documentationによれば、hprofのようなネイティブエージェントライブラリは、JVMの初期化中に、バイトコードが実行される前にロードする必要があります。そうではありませんが、オンザフライでこれを行うことはできません。

代わりに、主な機能の中で変更されたJVMパラメータを使用してJavaプロセスを再起動することもできますが、これは簡単なことではありません。

+0

悲しいことに、少なくともHPROFに関する限り、これは正解と思われます。+1 – thkala

+0

私はこれが良い答えであると確信していません。より正確には、元の質問に対処しているかどうかにかかっています。引用されたドキュメントは、JVMがコードを実行する前にプロファイリングエージェントを起動しなければならないと述べています。コードが実行を開始する前にプロファイリングを開始する必要はありません。プロファイラを開始でき、_profiling_は後で開始できます。プロファイリングの開始を制御するプログラム的な方法は非常に便利です。コードを実行する前に_profiling_を開始しなければならないと言うことができますか?そして、引用を引用しますか? – Jason