52

重複の可能性:
優れた .NET プロファイラーとは?

優れた .NET CLR メモリ プロファイリング ツールを探しています。

私の主な要件は、IIS およびスタンドアロンの CLR アプリとうまく連携することです。理想的には、どのオブジェクトが割り当てられているか、どこに割り当てられているか、およびそれらのサイズを確認できますか?

特定のツールを使った経験があり、喜んでお勧めできる人はいますか?

4

9 に答える 9

45

私は現在、Scitech .NET Memory Profiler 3.1ANTS Memory Profiler 5.1の両方を評価しています。1、2 年前に JetBrains を試してみましたが、ANTS ほど良くなかったので、今回は気にしませんでした。Web サイトを読むと、メモリプロファイリングには他の 2 つほど適していないように見えます。

ANTS と Scitech メモリ プロファイラの両方には、もう一方にはない機能があるため、どちらが最適かは好みによって異なります。一般的に言えば、Scitech はより詳細な情報を提供しますが、ANTS は漏れているオブジェクトを特定するのに非常に優れています。全体として、可能性のあるリークを非常に迅速に特定できるANTSの方が好きです.

私の経験からの主な長所と短所は次のとおりです。

ANTS と Scitech .NET メモリ プロファイラーの共通機能

  • リアルタイム分析機能
  • Web サイトの優れたハウツー ビデオ
  • 使いやすい
  • 適度なパフォーマンス (プロファイラーが接続されていない場合よりも明らかに遅いですが、イライラするほどではありません)
  • 漏れているオブジェクトのインスタンスを表示する
  • 基本的にどちらもよくやってくれます

アリ

  • ワンクリック フィルターを使用して、イベント ハンドラーによってのみ存続しているオブジェクト、破棄されているが存続しているオブジェクト、破棄されたオブジェクトからの参照によってのみ存続しているオブジェクトなど、一般的なリークを見つけます。これはおそらく ANTS のキラー機能です。このため、リークの検出は非常に高速です。私の経験では、リークの大部分はイベント ハンドラーがアンフックされていないことが原因であり、ANTS はこれらのオブジェクトに直接移動します。素晴らしい。
  • オブジェクト保持グラフ。同じ情報が Scitech で利用可能ですが、ANTS で解釈する方がはるかに簡単です。
  • オブジェクト自体のサイズに加えて、子のサイズを表示します (ただし、全体的なクラス リストではなく、残念ながらインスタンスが選択されている場合のみ)。
  • Visual Studio との統合の改善 (グラフを右クリックしてファイルにジャンプ)

Scitech .NET メモリ プロファイラ

  • オブジェクトが割り当てられたときのスタック トレースを表示します。これは、多くの異なる場所に割り当てられているオブジェクトに非常に役立ちますANTS では、リークされたオブジェクトが作成された場所を正確に特定することは困難です。
  • 破棄されなかった使い捨てオブジェクトの数を示します。リークを示すものではありませんが、ガベージ コレクションの高速化の結果として、この問題を修正し、アプリケーションのパフォーマンスを向上させる機会を特定します。
  • より詳細なフィルタリング オプション (複数の列を個別にフィルタリングできます)。
  • 作成されたオブジェクトの総数 (収集されたガベージを含む) に関する情報を表示します。ANTS は、「ライブ」オブジェクトの統計のみを表示します。これにより、アプリケーション全体のパフォーマンスの分析と調整が容易になります (たとえば、多くのオブジェクトが不必要に作成されていて、必ずしもリークしていない場所を特定します)。

要約すると、ANTS は何がリークしているのかをより速く見つけるのに役立つと思いますが、Scitech はアプリケーション全体のメモリ パフォーマンスと個々のオブジェクトについてもう少し詳しく説明します。破棄されていない使い捨てオブジェクトのスタック トレースと追跡が ANTS に追加された場合、他のものを使用する必要はないと思います。

于 2009-09-25T02:55:16.490 に答える
32

CLR プロファイラーがまだここで言及されていないのは奇妙です。それは無料で、うまく機能します。

Microsoft 自身のサイトから入手できる複数の古いバージョンに注意してください。2011 年 11 月現在、最新バージョンは次のようです:最新バージョン (別のリンク)

于 2011-06-16T12:50:41.827 に答える
8

本当に絶望的な場合は、WinDbg を.Net フレームワークに同梱されている Son-of-Strike ライブラリ(SOS.DLL) と共に使用できます。

于 2009-09-25T02:59:56.713 に答える
6

私自身、 JetBrains Profilerの大ファンです

于 2008-12-30T09:26:49.140 に答える
5

私は 2 番目のANTS プロファイラーです。

必要なものをすべて表示するだけでなく、実行に最も時間がかかるものとメモリを消費するものを確認できる簡単なグラフを描画します。グラフをクリックすると、コード内の対応する行が表示されます。

そして、実行に時間がかかりすぎるコード行に小さなプログレス バーが表示されるのが好きです。

于 2008-12-30T11:25:15.813 に答える
5

.Net Memory Profilerは、以前のプロジェクトで大いに役立ちました。無料ではありませんが、とても良いです。

.NET Memory Profiler は、メモリ リークを検出し、C#、VB.NET、またはその他の .NET 言語で記述されたプログラムのメモリ使用量を最適化するための強力なツールです。

于 2008-12-30T09:23:37.617 に答える
4

誰もが利用可能なツールをリストしているので、.NET 用のプロファイラーの完全なリストを紹介したいと思います: http://sharptoolbox.com/categories/profilers-debuggers

ここで提案されているツールと他のすべてのツールがあり、それぞれが提案する内容の簡単な説明が付いています。

于 2009-10-23T09:12:25.117 に答える
4

現在、ANTS Profilerを使用しています。多くのプロファイリング詳細オプションを備えた非常に優れたツールであり、スタンドアロン アプリケーション、開発サーバー、IIS とうまく連携します。

于 2008-12-30T09:47:07.087 に答える
1

私は長年にわたってAqtimeを使用して大きな成功を収めてきました。ANTS などを試しましたが、アンマネージ コードで多くの開発も行っているため、Aqtime に戻りました。

于 2009-01-03T12:03:45.503 に答える