dotMemory は Visual Studio から直接起動できる .NET メモリプロファイラーで、JetBrains Rider のプラグインか単独のツールとして使用されます。
dotMemory では、サポート対象バージョンの .NET Framework、.NET Core、.NET、ASP.NET ウェブアプリケーション、IIS、IIS Express、Windows サービス、ユニバーサル Windows プラットフォームアプリケーションなどに基づいてアプリケーションをプロファイリングできます。 macOS と Linux の dotMemory は JetBrains Rider の一部、またはコマンドラインプロファイラーとしてのみ使用できます。
dotMemoryをご使用いただくと、タスクマネージャまたはプロセスエクスプローラを 使用して取得した生のWindowsメモリダンプをインポートし、それらを通常のメモリスナップショットとして解析できます。 そうすることで、 自動インスペクション、保持図、およびその他の洗練されたdotMemoryの各機能をご利用いただけます。
アプリケーションでメモリがどのように保持されているかを理解することは、 メモリをうまく最適化するために不可欠です。 このビューでは、ドミネーター(他のオブジェクトを排他的にメモリに保持するオブジェクト)の階層が サンバーストチャートに表示されます。
チャートを少し見てみるだけで、どのオブジェクトがアプリケーションにとって非常に重要かを判断し、 最大の構造を 評価することができます。ドミネーターが保持するメモリが多いほど、中心角度は 大きくなります。
特定のドミネーターの保持パスを取得するには、対応する円弧をクリックします。 ドミネーターをダブルクリックするとチャートが拡大され、このドミネーターが保持しているオブジェクトの詳細を確認できます。
dotMemory が JetBrains Rider に統合されているため、メモリ割り当ての追跡や指定した時間間隔での割り当ての解析などをリアルタイムで実行できます。 また、必要に応じていつでも Visual Studio からメモリプロファイリングセッションを開始できます。
後で、dotMemoryオブジェクトセットの型から、 その型のVisual Studioでの宣言に移動できます。
場合によって、特定の条件に該当する場合にのみスナップショットを撮りたいときがあるかと思います。 そのようなとき、 dotMemoryは自動的にスナップショットを取得することが可能です。 これは、アプリケーションのメモリ消費量が 大幅に増加した場合、またはスナップショットを手動で撮るのが難しい場合に特に役立ちます。 特定の条件を設定するだけで、それが満たされたときスナップショットが収集されます。
アプリケーションで消費されるメモリを監視し、スナップショットを取得してドロップすると、ワンクリックで比較できます。
複数のビューからヒープ内のオブジェクトを調べることができます。 オブジェクト同士の関係を知りたいですか? それらはどのようなオブジェクトを参照していて、どのようなフィールドを介しているでしょうか? どのコールがこれらのオブジェクトを作成したのかを知りたいですか? おまかせください! dotMemoryではすべてのものが見られます。
2つのスナップショットを比較することは、メモリリークを引き起こしているオブジェクトを見つけるための主な方法です。 比較ビューを使用して、スナップショット間で作成されたオブジェクトの数と収集されたオブジェクトの数を調べることができます。
メモリプロファイリングはプロのためだけのものであると言われることがありますが、dotMemoryのユニークなユーザインターフェースは、その参入障壁を劇的に下げ、メモリプロファイリングを簡単にします。 メモリの問題の本当の原因が特定されるまで、上から下へ一連のオブジェクトから特定のインスタンスへと移動していくだけです。
過剰な割り当てやガベージコレクションは、メモリ管理に大きなオーバーヘッドをもたらしてしまう可能性があります。 トラフィックビューを使用して、アプリケーションで最も集中的に作成、または収集されるオブジェクトと、このメモリトラフィックを引き起こしている関数を把握できます。
dotMemoryは、スナップショットを自動的にスキャンして、文字列の重複、疎な配列、イベントハンドラのリーク、WPFバインディングなど、メモリの一般的な問題を検出します。 どこから始めればよいのか分からない場合、これらのインスペクションはスナップショット解析の出発点として最適です。
dotMemoryには、dotMemory.exeコマンドラインプロファイラが同梱されています。 このツールを使用してプロファイリングを自動化できます。プロファイリングを継続的インテグレーションビルドの一部にするか、 単にプロファイリングルーチンを高速化することができます(例えば、同じアプリケーションを 定期的にプロファイリングする必要があり、毎回dotMemoryユーザインターフェイスを起動したくない場合)。
無料 30 日間体験版をご利用可能です