0

私のアプリケーションでは、新しいリソースが作成されるたびに新しい JVM が起動されます。キットに接続することで、新しく起動した JVM をプロファイリングできます。

現在、JVM の準備が整った後にのみ JVM に接続できます。その後、プロファイルを作成できますが、JVM メソッドが起動している間にプロファイルを作成したい、つまり、初期化中に JVM のメソッド呼び出しをプロファイルしたいのです。

これを達成する方法はありますか?

この理由は、初期化中にのみ呼び出される一部のメソッドが何らかの問題を引き起こし、JVM が作成されて準備が整うと、これらのメソッドをプロファイリングできないためです。

ありがとう

4

2 に答える 2

0

アプリが起動されて最初の数秒で実行されるコードで、リモート デバッグ セッションを実行したいと考えています。

これを行おうとすると発生する可能性のある問題は、コードが最初に実行されるため、Eclipse を介してデバッガーをアタッチしてブレーク ポイントを設定する機会を得る前に、JVM がコードを通り過ぎてしまう可能性があることです。

解決策は、JVM/デバッグ構成をセットアップして、起動時にサスペンドするように設定することです。

リモート デバッグを設定する一般的な方法は、アプリケーションの起動に使用するコードで次の JVM 引数を使用して、デバッガーが後でポート 8000 にアタッチできるようにすることです。

-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

実際、これは通常モードではなくデバッグ モードでアプリを起動したときに Eclipse が行うことです。アプリケーションの起動時に使用される JVM 引数にこの行を追加します。

suspend=n に注意してください。これが y に設定されている場合、JVM は起動時に一時停止します。デバッガーがアタッチして解放するのを待ってから、続行します。

したがって、サスペンド フラグを使用すると、問題は解決されます。

ソース: http://www.onkarjoshi.com/blog/224/how-to-suspend-vm-on-startup-when-remote-debugging-your-Java-app/

于 2014-01-19T04:08:30.107 に答える