dotMemory の新機能
dotMemory 2021.1
dotTrace のホーム画面を完全に作り直しました。これで、新しいプロファイリングセッションの構成と開始、ワークスペースの操作、その他の基本的な操作の実行がはるかに簡単になりました。
これで、
gcore
またはdotnet-dump
を使用して Linux システムで収集された .NETCore アプリケーションのダンプを分析できます。現在、dotMemory では、任意の時間間隔でメモリ割り当てを分析できます。タイムラインで間隔を選択するだけで、メモリの割り当てビューに、この間隔で割り当てられたオブジェクトと、割り当てたスタックトレースが表示されます。
dotMemory 2020.3
.NET5 のサポート
dotMemory では、Windows、macOS、Linux 上の .NET5 アプリケーションのプロファイルを作成できるようになりました。Linux および macOS でアプリケーションをプロファイリングするには、dotMemory コマンドラインプロファイラーを使用する必要があることに注意してください。
- タイムラインインスペクション
dotMemory は、タイムラインデータを使用して、タイムライングラフ上に自動インスペクションを提供します。現在、3 つのインスペクションが利用可能です。
ガベージコレクションの圧力が高い
Gen0 で固定されたオブジェクト
高速ラージオブジェクトヒープの成長率
- 固定されたオブジェクトヒープのサポート
.NET 5 では、固定されたオブジェクト(ヒープ内で移動できないオブジェクト)を格納するための個別のヒープセグメントが導入され、ヒープの断片化が発生しました。dotMemory は、ヒープフラグメンテーションビューに固定されたオブジェクトヒープを表示します。また、dotMemory は、プロファイリング中にピン留めされたオブジェクトヒープに割り当てられたメモリをリアルタイムで表示するようになりました。
さまざまなタイムラインの改善
ガベージコレクションは、メインタイムラインの別のグラフに表示されます。
これで、タイムラインで特定の時間範囲を選択できます。選択した時間範囲について、GC 時間と割り当てられたメモリに関する情報が表示されます。
パフォーマンスの向上。
dotMemory 2020.2
dotMemory コマンドラインプロファイラーは Linux と macOS をサポートします。
Linux 用の dotMemory コマンドラインプロファイラー(GLIBC_2.23 以降のディストリビューション)を使用すると、ARM64 システムでアプリケーションをプロファイリングできます。
固定されたオブジェクトを個別のオブジェクトセットとして開くことができます。
GC ルートから到達できないオブジェクトは、個別のオブジェクトセットとして開くことができます。
dotMemory 2020.1
バグ修正と安定性の改善。
内部データ形式も作り直したことに注意してください。つまり、dotMemory 2020.1 スナップショット形式は以前のバージョンと互換性がありません。同時に、今後のリリースでいくつかの新機能を導入できるようになります。
dotMemory 2019.3
新しい自己プロファイリング API。
セルフプロファイリング API(アプリケーションが自分でプロファイリングセッションを初期化および開始できる API)は、より便利で使いやすくなっています。セルフプロファイリング API は、NuGet パッケージとして配布されます。オブジェクトインスタンスの仮想メモリアドレスを表示できるようになりました。
dotMemory 2019.2
dotMemory コンソールプロファイラーの改善。
dotMemory 2019.2 は、リモートプロファイリングのサポートを停止します。適切な代替品を提供するために、dotMemory コンソールプロファイラーを大幅に改善しました。コンソールプロファイラーは、スタンドアロン dotMemory とほぼ同等です。コンソールツールを使用して、次のスナップショットを取得できます。
.NET Core アプリケーション
IIS Express でホストされるアプリケーション
Windows サービス
UWP アプリケーション
WCF サービスライブラリ
または、プロファイリングセッションの実行後に起動される .NET アプリケーション。
これで、コンソールプロファイラーは、これが可能になった直後にメモリスナップショットを取得できます。この機能は、ベースラインスナップショットを取得して比較に使用する場合に役立ちます。
オンデマンドのスナップショット処理。
データが完全に処理されるまで待たずに、スナップショットの操作を開始できます。.NET Core 3.0 の完全サポート。
dotMemory は、.NET Core 3.0 Preview 7 プロセスにアタッチできるようになりました。Visual Studio の ASP.NET Core アプリケーションのサポートの改善:
さまざまなホスティングモデルが正しくサポートされています。
プロファイリングセッションを開始するときに、ブラウザー設定と SSL を有効にするが考慮されます。
ASP.NET Core 3.0 Preview 7 がサポートされています。
その他の改善...
プロファイリング API は、プロファイルされたプロセスからデタッチする機能を取得します。
Silverlight および WebDev アプリケーションはサポートされなくなりました。
dotMemory 2019.1
.NET Core 3.0 アプリケーションのサポート。
新しいプロファイリング API。プロファイリング API を大幅に更新しました。
ステートマシンを削除しました。これで、コントローラーの状態に関係なく、あらゆる API メソッドを呼び出すことができます。
利用可能なメソッドの数を減らしたため、API の使用が簡単になりました。
NuGet パッケージとして API を配布します。
型宣言への改善されたナビゲーション。これで、「型宣言へのナビゲート」アクションにより、Visual Studio だけでなく JetBrains Rider にもナビゲートできるようになりました。
dotMemory 2018.3
条件によるスナップショットの取得の改善。プロファイリングコントローラーは、スナップショットを取得するための新しい条件総メモリ使用量が X MB を超えた場合にスナップショットを取得するを取得します。
タイムライングラフの改善。特定の時点で正確なメモリデータを取得するには、グラフをクリックします。
IIS Express のプロファイリング設定の見直し。IIS Express でホストされている Web アプリケーションをプロファイルするデフォルトの方法は、dotMemory に
applicationhost.config
ファイルを提供することです。
dotMemory 2018.2
実行構成のプロファイリング。Visual Studio に統合された dotMemory は、より多くのプロファイリング機能を取得します。これで、スタートアッププロジェクトだけでなく、任意の「実行構成」(スタートアッププロジェクト、任意の実行可能ファイル、または任意の静的メソッド)をプロファイリングできます。
タイムラインは、.NET コア、ASP.NET コア、IIS ホスト型 Web アプリケーションなど、あらゆるタイプのアプリケーションで利用できるようになりました。
タイムラインには新しい GC 以来 LOH に割り当てられていますチャートが含まれています。グラフは、ラージオブジェクトヒープへのインスタントメモリ割り当てを示し、大きなオブジェクトの過度の割り当てを検出するのに非常に役立ちます。
現在、ファイナライズ可能オブジェクトインスペクションは、dotMemory 経由でキャプチャーされたスナップショットだけでなく、RAW メモリダンプでも機能します。さらに、ファイナライズ可能オブジェクトはスナップショット / ダンプに存在するオブジェクトとして扱われるため、オープンしてより完全にインスペクションすることができます。
2 つの新しいルートタイプ: F- 到達可能キュー / ファイナライズキュー。
dotMemory コンソールランナーでは、撮影したスナップショットの名前を設定できます。
dotMemory 2018.1
ユーザーインターフェースが改善されました。2018.1 リリースでは、複数のマイナーなユーザーインターフェースが改善されています。最も重要な変更は、再加工された分析サブジェクトパネルです。分析パスをナビゲートする方がはるかに簡単です。
dotMemory 2017.3
改良された検索。これで、オブジェクトセットビューで特定のオブジェクトを検索するときに、特別な記号を使用して検索をより効率的にすることができます。
dotMemory 2017.2
メモリダンプをインポートします。これで、Windows の raw メモリダンプをインポートし(通常は、タスクマネージャーまたは Process Explorer のツールを使用して取得)、dotMemory のすべての機能を使用して分析できます。
改善された「ドミネーターによるグループ」ビュー。ドミネーターによるグループビューは、アプリケーションの重要なオブジェクトが何であるかを理解しやすくするために作り直されました。ドミネーターツリーは、ドミネーターのサンバーストチャートと結合されます。
ユーザーインターフェースが改善されました。dotMemory ユーザーインターフェースは、分析対象とビューを簡単にナビゲートできるように若干再設計されました。この作業のさらなる利点は、ビュー領域の拡大です。
dotMemory 2017.1
コマンドラインプロファイラ。dotMemory 2017.1 には、コマンドラインからプロファイルできる dotMemory.exe ツールが含まれています。メモリスナップショットを集めるプロセスを自動化する必要があるとき、このツールは非常に役に立ちます。
dotMemory 2016.3
ファイナライズ可能オブジェクトインスペクション。dotMemory は、ファイナライズされたオブジェクトとファイナライズのためにキューに入れられたオブジェクトに関してアプリケーションをチェックします。
dotMemory 2016.2
異なるセッションのスナップショットを比較する。dotMemory を使用すると、異なるワークスペースに保存されているメモリスナップショット、つまり異なるプロファイリングセッションで収集されたスナップショットを比較できます。
dotMemory 2016.1
閲覧履歴をナビゲートします。
dotMemory 10
dotMemory ホームビュー。
dotMemory は、dotTrace の最近のバージョンで使用可能なビューと同様のホームビューを受け取ります。
関連ページ:

プロファイリングセッションの構成 | dotMemory
プロファイリングセッションを構成するには、次のことを行う必要があります。プロファイルするアプリケーションを dotMemory で実行する方法を指定します。これは、実行構成の助けを借りて行うことができます。すでに実行中のアプリケーションのプロファイルを作成する場合、この手順は必要ありません。必要に応じて、他のプロファイリングオプションとプロセスフィルターを構成します。1. 実行構成の作成:実行構成は、プロファイルされたアプリケーションをどのように実行するかを dotMemory に指示する方法...

分析の概要
プロファイリングデータの収集が完了すると、dotMemory は分析の概要ページで新しいタブを開きます。分析の概要ページには、セッション中に収集されたデータに関する情報が表示されます。タイムライン、収集されたスナップショット、スナップショット比較領域、タイムライン:タイムライングラフは、プロファイリングプロセス中にアプリがメモリをどのように消費したかを示しています。タイムラインは、Gen0、Gen1、Gen2 ヒープ、ラージオブジェクトヒープ、ピン留めオブジェクトヒープのインスタントサイズを示...

インスタンスを分析する | dotMemory
特定のオブジェクトインスタンスを分析することは、調査の非常に重要なステップとなります。dotMemory は、インスタンス分析に特化したさまざまなビューを提供します。発信参照、キー保持パス、入ってくる参照、ルートへの最短経路、作成スタックトレース、ビューの選択:インスタンスの特定のビューを選択するには、ビューリスト内の対応するアイテムをクリックします。インスタンスをマークする:インスタンスのマーク付けは、さまざまなビューやスナップショットで特定のインスタンスをすばやく見つけることができる非常

プロファイリングセッションの制御
プロファイリングセッションを実行すると、dotMemory は新しい分析タブを開き、プロファイリングされたアプリケーションを起動します。プロファイリングプロセスを制御するには、ページの上部にある次のボタンを使用します。強制 GC: アプリケーション内のフルガベージコレクションを強制します。プロセスを強制終了: アプリケーションの現在選択されているプロセスを強制終了します。1. プロセスを強制終了の使用には注意が必要です。プロセスを無条件に終了すると、アプリが処理するデータが失われる可能性があります...

タイプ別にグループ化
タイプ別にグループ化ビューには、選択したオブジェクトセット内のオブジェクトのリストが表示されます。便宜上、すべてのオブジェクトはタイプによってグループ化されます。リストの各行は特定のタイプを表します。セットに存在するそのタイプのすべてのオブジェクトは、この行でカウントされます。タイプ別にグループ化ビューを使用すると、あまりにも多くのメモリを消費するオブジェクトやメモリには存在しないオブジェクトを識別できます。このリストは、次の列で構成されています。タイプ型名。オブジェクト数同じ種類のオブジェクト...

ドミネーターによるグループ | dotMemory
ドミネーターによるグループビューを使用すると、アプリでメモリがどのように保持されているかを理解できます。例: アプリのメモリの大部分が文字列によって消費されていることを知っています。それにもかかわらず、おそらく、最適化の対象は、これらの文字列自体ではなく、格納するデータ構造です。ドミネーターによるグループビューは、「誰がメモリを保持するか」という質問に答えます。これは、効果のないメモリ使用量を分析するときに非常に重要です。この質問に正しく答えるには、ドミネーターの概念に精通している必要があります...