2

jvisualvm でアプリケーションのプロファイルを作成しようとしています。アプリケーションはループで構成されており、データベースからデータがロードされ、そのデータに対していくつかの複雑な計算が実行されます。データのセットが処理されると、次のセットがロードされて計算されます。

アプリケーションを起動して jvisualvm をアタッチすると、CPU プロファイリング ページ (「クラスからの Sart プロファイリング」および「クラスをプロファイリングしない」) でフィルターを設定します。これは、データベース アクセスに関連するものには関心がないためです。その他の入出力関連のもの。

フィルターは機能します - ほとんど。sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()私の問題は、 sun.* が「クラスをプロファイルしない」フィルターに入力されているにもかかわらず、ほとんどの時間が に費やされているとプロファイラーが報告することです。これは、プロファイリング結果に表示される sun.* の唯一のメソッドです。

誰もこれを以前に見たことがあり、それを取り除く方法を知っていますか? 問題は、他のすべての方法が [セルフ時間] 列にごくわずか (<1%) しか表示されず、ほとんどが 0% で表示されることです。

使用される jvisualvm のバージョンは 1.3.2 です。

前もってありがとう、アクセル

4

2 に答える 2

1

ほとんどの時間はデータベースからの待機に費やされているようです。残りのものをプロファイリングしたい場合は、次のいずれかを行うことができます

  • データベースをスタブしてすばやく返すようにする(つまり、コードの残りの部分にほとんどの時間を費やす)、または
  • YourKitやJProfiler(有料、あなたが望むものを確実にサポートする)やTPTP(無料ですが、どれほど強力かはわかりません)などのより優れたプロファイラーを使用してください
于 2011-08-25T16:35:29.787 に答える
0

CPUプロファイリングページの「ProfilenewRunnables」のチェックを外します。「セルフタイム」で他の質問に答えるには、プロファイルされたデータのCPUスナップショットを作成する必要があります。スナップショットには、メソッドの合計時間情報が含まれています。

于 2011-09-03T09:17:54.457 に答える