EclipseVisualVMランチャーを使用しようとしています。VisualVMが遅すぎてアプリケーションのプロファイリングを実行できない場合にインスタンスが生成されるように見えることを除けば、かなり良いようです。私のアプリケーションは、プロファイラーが初期化される前に実行を終了します。起動すると、次のようなエラーウィンドウが表示されますcannot open requested application
。次に、Eclipseを実行しているVM(「org.eclipse.equinox.launcher.Main」というラベルが付いています)が表示されます。アプリケーションを待機して適切なプロファイリングを行うにはどうすればよいですか?
5 に答える
これはおそらく手遅れですが、同じ問題が発生し、ブレークポイントを設定してからデバッグモードで開始してもまったく役に立ちませんでした。最終的に、VisualVMが一時データを%TMP%/ hsperfdata_ [username]フォルダーに保存することがわかりました。たとえば、私のWindowsマシンでは、そのフォルダーはC:\ Users \ Jacob \ AppData \ Local \ Temp\hsperfdata_Jacobでした。プロセスにはそのフォルダーにアクセスするための十分なアクセス許可がないことが判明したため、プロセスのアクセス許可を緩和すると、正常に機能するようになりました。これが同じ問題を抱えている人に役立つことを願っています!
私はその問題を知っています。私がいつも思いついた唯一の貧乏人の解決策は次のとおりです。
- ソースコードにブレークポイントを設定する
- プログラムをデバッグモードで起動します
- プロファイラーを接続します
- プログラムを続けましょう
VisualVMがプロファイリングエージェントをVMに挿入するのに少し時間がかかりますが、リモートプロファイリングのみが許可されると確信しています。
YourKitを使用する代わりに、最初からアプリケーションのプロファイルを作成できます。このようにして、プロファイリングエージェントはVMの起動時に注入されます。
java -agentpath:c:\yourkit\yjpagent.dll FooClass
VisualVMが技術的に可能であるため、なぜこのオプションを提供しないのか興味があります。とにかく、クラスのロードなどにも興味がない限り、デバッグのトリックはEclipse内からの優れたソリューションだと思います。