web-dev-qa-db-ja.com

合計メソッド時間Java VisualVM

Java VisualVMでは、「セルフタイム」ではなく、メソッドの合計時間を表示する方法はありますか?(後者は、どのくらいの時間についても何も通知しないため、特に有用ではありません。メソッドは実際に実行にかかります。)

そうでない場合、スタンドアロンの無料のJavaプロファイラーでメソッドの合計時間を計算しますか?

52
kpozin

トレースデータを「スナップショット」ビューで見ると、合計とセルフタイムを確認できます。

結果の表について表示される「スナップショット」ボタンを押します。これにより、「呼び出しツリー」ビューを含む新しいタブが作成され、自己と合計時間の内訳が表示されます。 「結合」ビューもこの情報を提供しますが、標準のプロファイリングビューと同様の「ホットスポット」ビューで画面スペースを分割します。

スナップショットは、標準の「プロファイラー」または「サンプラー」データから作成できます。ただし、「プロファイラー」スナップショットはアプリケーションを閉じる前にのみ作成でき、「サンプラー」スナップショットはいつでも作成できます。

(上記の情報はVisualVM 1.3.1に基づいています)

52
Joseph Cottam

プロファイリング結果のスナップショットを撮るだけです。あなたはそこに壁時計時間とセルフタイムを得るでしょう。

7
JB-

ルーチンの合計時間を(ミリ秒ではなく)壁時計の実行時間の割合として取得する簡単な方法があります。待っている間にctrl-breakを使用して一連のスタックショットを取得します。ルーチンを含むそれらの割合は、かかる時間の割合です。精度は、何枚のショットを撮るかによって異なります。問題がある場所を探しているだけなら、正確な時間測定は必要ありません。 これがどのように機能するかの簡単な説明です。

1
Mike Dunlavey

jprofilerまたはいくつかのjavaagentツールを使用して、メソッドの実行時間を監視できます。githubには、simpleAPMなどのいくつかのオープンソースツールがあります。

0
dingjsh

各メソッドの実行にかかる時間を調べたいと思います。 JETMを使用してパフォーマンスを監視する必要があります。これにより、各メソッドの入口時間、出口時間、および時間差が得られます。どの方法がどれだけの時間を費やしているかがわかります。

Springを使用している場合は、JETMの統合が簡単になります http://jetm.void.fm/howto/spring_2_x_integration.html

0
vsingh