2012-08-09 3 views
9

Eclipse VisualVM launcherを使用しようとしています。 VisualVMがアプリケーションのプロファイリングを行うには遅すぎる場合、インスタンスを生成するように見えることを除いて、これはかなりいいようです。私のアプリケーションは、プロファイラが初期化される前に実行を終了します。起動すると、エラーウィンドウがポップアップして、cannot open requested applicationと表示されます。次に、Eclipseを実行しているVM(「org.eclipse.equinox.launcher.Main」というラベルが付けられています)を表示します。アプリケーションを待って適切なプロファイリングを行うにはどうすればよいですか?VisualVMランチャーエラー

答えて

8

私はその問題を知っています。唯一の貧乏人のソリューション私はいつも思い付いたです:ソースコード にブレークポイントを設定し

  1. プログラムが
続けましょうプロファイラを接続し
  • デバッグモードでプログラムを起動します
  • VisualVMがプロファイリングエージェントをVMに注入するのにちょっと時間がかかりますが、リモートプロファイリングだけが可能であることは間違いありません。

    YourKitを使用することもできます。これは、最初からアプリケーションをプロファイルすることができます。プロファイリングエージェントは、VMの起動時に注入され、この方法:

    java -agentpath:c:\yourkit\yjpagent.dll FooClass 
    

    VisualVMのは、その技術的に可能であるため、このオプションを提供していない理由を私は好奇心旺盛です。とにかく、クラスロードなどに興味がない限り、デバッグ・トリックはEclipse内の良い解決策だと思います。

  • +0

    スレッド自体が動作している間にThread.sleep()を実行できませんでしたか? –

    +0

    @RyanAmosこれも可能ですが、デバッグモードでトリックを行う前にこれを行っています。私は 'Timer.sleep'と一緒にそれを計時するのが好きではありませんでした。あなたが'睡眠 'が消えてしまったり、あまりにも時間がかかったりするまで待たなければなりません。 –

    +0

    あなたのキットは高価すぎます。助けてくれてありがとう! –

    11

    これはおそらく遅すぎますが、同じ問題があり、ブレークポイントを設定してからデバッグモードはまったく役に立たなかった。私は最終的にVisualVMがそのフォルダがC:\ Users \ Jacob \ AppData \ Local \ Temp \ hsperfdata_JacobであるWindowsマシン上の%TMP%/ hsperfdata_ [username]というフォルダに一時的なデータを保存することを発見しました。プロセスがそのフォルダにアクセスするのに十分な権限を持っていないことが判明したので、私はそのフォルダのパーミッションを緩和しました。これは同じ問題を抱えている人には便利だと思います!

    3

    Windowsでは、Eclipseを管理者として実行します。

    +0

    これはWindows 8で私にとってはうまくいきました。ありがとうAndres! –

    +0

    ようこそ。 – Andres

    0

    これはダム解決策ですが、機能します。ここに行く:

    "while(true){your_app}"といった無限ループラッパーをアプリケーションに追加します。

    プログラムの実行時間が長いほど、タイミングノイズも均等になりません。

    関連する問題