dotMemory の新機能
dotMemory 2025.2 – 2026.1
バグ修正と安定性の改善。
dotMemory 2025.1
以前は、Visual Studio 内の dotMemory はスタンドアロンツールへのエントリポイントとしてのみ使用できました。 プロファイリングと詳細な分析には、dotMemory のスタンドアロン版が必要でした。 現在、dotMemory は Visual Studio と完全に統合されており、IDE を移動することなくメモリスナップショットのプロファイリングと分析の両方を行うことができます。
今では、dotTrace と同様に、ワークスペースを便利に管理できます。dotMemory はすべてのワークスペースを一時ストレージに保存します。 自動ワークスペースクリーンアップを、ストレージの最大サイズまたはワークスペースの経過日数に基づき設定できます。 この機能は、dotMemory のスタンドアロンバージョンおよび JetBrains Rider の dotMemory で利用できます。
dotMemory 2024.3
オブジェクトインスタンスの作成スタックトレースビュー
UI の再設計時に削除されていた 作成スタックトレース ビューを再導入しました。 このビューには、オブジェクトインスタンスの作成につながった関数呼び出しスタックが表示されるため、メモリの問題の根本原因を特定できます。
オブジェクトセットのバックトレースビュー
UI の再設計中に削除されていたオブジェクトセットの バックトレース ビューを再導入しました。 この反転された呼び出しツリーは、特定のオブジェクトセットを作成した関数から始まり、下から上に向かってチェーン呼び出しを示しています。
サンバーストチャートでコールツリーを視覚化する (すべての OS)
コールツリーをサンバーストチャートとして表示できるようになり、最も多くのメモリを割り当てる関数がハイライトされます。 この機能は、Windows、Linux、macOS のスタンドアロンバージョンの dotMemory と JetBrains Rider の dotMemory の両方で利用できるようになりました。
つららチャートでドミネーターを視覚化する (すべての OS)
ドミネーターツリーは、ドミネーターと保持オブジェクトのメモリ消費量を示すつららグラフとして表示できるようになりました。 この機能は、Windows、Linux、macOS で、dotMemory のスタンドアロンバージョンと JetBrains Rider の dotMemory の両方で使用できます。
ユーザーインターフェースの改善
現在、すべてのオペレーティングシステム上のすべての dotMemory バージョンで、統一された外観と操作性が実現されています。
マイナーな UI/UX の改善。
dotMemory 2024.2.5
ビューナビゲーションの改善
単一の要素(例:複数の
Stringオブジェクト)となるオブジェクトセットを開くと、dotMemory は自動的により適切なビューに切り替わります。 例: 文字列のセットを開くと、次のようになります。以前は、dotMemory は
Stringオブジェクトセットを タイプ ビューで開き、単一のStringアイテムだけが表示されていました。このため、さらに分析を行うには手動で別のビューへの切り替えが必要でした。現在、dotMemory は自動的に 同様の保持力 ビューでセットを開きます。 タイプ ビューは無効になっています。
dotMemory 2024.2
インスタンス検索の改善
インスタンスビューに新しいフィルタリングオプションが追加されました:
文字列値による検索: フィルターフィールドに任意の文字列値を入力すると、dotMemory は一致する文字列をハイライトします。 これにより、コンテンツに基づいて特定の文字列インスタンスを簡単に見つけることができます。
文字列値の正規表現サポート: より高度な検索には正規表現を使用します。 例:
^nAsso.{5,}ID$はnAssociatedObjectID.nAssociatedObjectIDと一致します。オブジェクトアドレスによる検索: オブジェクトインスタンスをメモリアドレスで検索することもできます。 これは、特定のオブジェクトを直接追跡する場合に便利です。
これらの機能は、JetBrains Rider の dotMemory および dotMemory のスタンドアロンバージョンで利用できます。
Linux および macOS 向けの dotMemory の改善
Linux および macOS の dotMemory バージョンでは、以前は Windows でのみ利用可能だった以下の機能が利用できます。
自動メモリインスペクション: Linux および macOS の dotMemory は、自動的に検出されたメモリの問題の数を表示する インスペクション ビューを取得します。
ワークスペース間のスナップショットの比較: これで、異なるプロファイリングセッションからのスナップショットを比較できるようになりました。
呼び出しツリー :dotMemory(Linux および macOS)および JetBrains Rider(Windows、Linux、macOS)の dotMemory スタンドアロンバージョンに 呼び出しツリー ビューが追加されました。
これらの機能は、JetBrains Rider の dotMemory および dotMemory のスタンドアロンバージョンで利用できます。
サンバーストチャートでコールツリーを視覚化する
コールツリーをサンバーストチャートとして表示できるようになり、最も多くのメモリを割り当てる関数がハイライトされます。 この機能は、dotMemory (Linux および macOS) および JetBrains Rider (Windows、Linux、macOS) の dotMemory のスタンドアロンバージョンで使用できます。
dotMemory 2024.1
MAUI フレームワークに基づいてアプリケーションをプロファイルできるようになりました。 現在、dotMemory は Windows 上の .NET 7.0+ をターゲットとする WinUI アプリケーションのプロファイリングをサポートしています。 このサポートは、dotMemory スタンドアロンと、Rider および ReSharper に統合された dotMemory で利用できます。
macOS のサポートの改善
現在、dotMemory のスタンドアロンバージョンでは、実行可能ファイルの代わりにアプリケーションバンドル (.app) を指定できるようになりました。
Rider の dotMemory は、macOS 実行構成をプロファイルできます。 次のターゲットフレームワークがサポートされています: net7.0-macos、net8.0-macos。
Linux および macOS の dotMemory における新しいビュー
Linux および macOS 上の dotMemory のスタンドアロンバージョンは、Windows 版にさらに近づき、次の機能を提供します。
オブジェクトセットを分析するための 同様の保持力 ビュー
ドミネーターオブジェクトを分析するための サンバースト ダイアグラム
凍結オブジェクトヒープのサポート
凍結オブジェクトヒープ内の不変オブジェクトに関する情報は、タイムライン、 ヒープ フラグメンテーション ダイアグラム、および 世代 ビューに表示されます。
dotMemory 2023.3
Linux および macOS 上の dotMemory スタンドアロン
これで、dotMemory のスタンドアロンバージョンを Linux および macOS オペレーティングシステムで実行できるようになりました。
Linux 上のプロセスダンプを分析する
dotMemory では、プロセスダンプを通常のスナップショットとしてインポートして分析できます。 この機能は、Linux でも利用できるようになりました。 dotMemory の Linux バージョンでは、Linux で収集されたダンプのみをインポートできることに注意してください。
dotMemory 2023.2
JetBrains Rider でのスナップショット分析
2023.2 より前は、Rider の dotMemory はメモリ割り当て分析にのみ使用できました。 2023.2 では、スタンドアロンバージョンの dotMemory と同様に、メモリスナップショットを収集し、Rider で分析できます。
スナップショット分析は、Windows、Linux、macOS で利用できます。
Windows では、プロセスダンプをインポートして分析することもできます。
自動スナップショットインスペクションや作成スタックトレースビューなど、一部の機能とビューは使用できません。
dotMemory 2023.1
さまざまな改善
パフォーマンスの改善とバグ修正。
dotMemory 2022.3
.NET 7 のサポート
dotMemory では、Windows、macOS、Linux 上の .NET 7 アプリケーションをプロファイリングできるようになりました。
次の問題に直面する可能性があることに注意してください。
アプリケーションが動的アセンブリを作成する場合、プロファイラーはこれらのアセンブリからのデータ (メソッド名とオブジェクトの種類) を表示しません。 これらは 未解決 として表示されます。
プロファイラーをアタッチしてアプリケーションをプロファイリングすると、セッション中にアプリケーションがクラッシュする可能性があります。
どちらの問題も、今後の .NET 7 バグ修正リリースで修正される予定です。
改善された ARM CPU サポート
Linux arm32 – Linux の arm32 CPU で dotMemory コマンドラインプロファイラーを実行できるようになりました。 サポートされているフレームワーク: .NET Core 3.1、.NET 5.0 - 7.0。
Windows arm64 – Windows の arm64 CPU で dotMemory を使用できるようになりました。 これは、スタンドアロンの dotMemory、Rider の dotMemory、Visual Studio の dotMemory、および dotMemory コマンドラインツールのすべてのバージョンに適用されます。
Linux および macOS の JetBrains Rider の dotMemory
Windows に加えて、Linux および macOS 上の JetBrains Rider でも dotMemory が利用できるようになりました。
実行 ウィジェットと 実行 | プロファイラー構成の切り替え メニューで、 メモリ (サンプリングされた割り当て) と メモリ (フル割り当て) という 2 つの新しいプロファイリングモードを使用できます。
実行 メニューから実行中のプロセスにプロファイラーを接続します。
タイムライン グラフの展開をリアルタイムで参照してください。 間隔を選択し、 メモリの割り当て ビューを開きます。 これは dotMemory スタンドアロンの同じビューと同等であり、割り当てられたオブジェクトと特定の時間枠の割り当て呼び出しツリーを分析できます。
このバージョンでは、メモリスナップショットの収集は使用できないことに注意してください。
dotMemory コマンドラインプロファイラーの改善
コマンドラインプロファイラーは、dotMemory ワークスペースを保存する条件を設定できる
--saving-mode引数を取得します。--saving-mode=always|has-snapshot|postponed:always– (デフォルト) プロファイリングセッションの終了後にワークスペースを保存しますhas-snapshot– ワークスペースに少なくとも 1 つのスナップショットが含まれている場合にのみ、セッション終了時にワークスペースを保存しますpostpone– stdin メッセージ## dotMemory["confirm-save"]が受信された場合にのみ、セッション終了時にのみワークスペースを保存します
dotMemory 2022.2
JetBrains Rider の dotMemory
dotMemory が JetBrains Rider IDE で利用できるようになりました。
実行 ウィジェットとメインメニューの 実行 | プロファイラー構成の切り替え で メモリ (サンプリングされた割り当て) と メモリ (フル割り当て) という 2 つの新しいプロファイリングモードを使用できます。
実行 メニューから実行中のプロセスにプロファイラーを接続します。
タイムライングラフ の展開をリアルタイムで参照してください。 間隔を選択し、 メモリの割り当て ビューを開きます。 これは dotMemory スタンドアロンの同じビューと同等であり、割り当てられたオブジェクトと特定の時間枠の割り当て呼び出しツリーを分析できます。
Rider の dotMemory では、2022.2 バージョンでスナップショットを収集できません。
dotMemory 2022.1
musl ベースの Linux ディストリビューションのサポート
dotMemory コマンドラインツールは、Alpine バージョン 3.13 – 3.15 をサポートするようになりました。 次の CPU とフレームワークがサポートされています。
x64:.NET Core 3.1、.NET 5.0 – 6.0。
arm64:.NET 5.0 – 6.0。
これで、特別なアイコンをアプリケーションウィンドウにドラッグするだけで、プロファイラーをすでに実行中のアプリケーションにアタッチできます。
プロファイリング API を利用してスナップショットを取得する際、
DotMemory.GetSnapshot("snapshot name");でスナップショット名を指定できるようになりました。名前は dotMemory の ホーム | スナップショット ページに表示されます。同様の保持力 ビューは、データをはるかに高速に処理するようになりました。
dotMemory コマンドラインツールは、スナップショットを保存するときに進行状況を表示するようになりました。
プロファイルする多数の管理対象子プロセスを作成するルートプロセスをプロファイルするとします。 ルートプロセス自体は、何らかの理由でプロファイリングから除外されます(たとえば、シェルスクリプト、ネイティブプロセス、単にプロセスフィルターを使用して除外する場合があります)。
前: プロファイラーは、フィルターに一致するすべての子プロセスのプロファイリングを開始します。 子プロセスが終了すると、プロファイラーは 1 秒間待機します。 この時間内に新しい子プロセスが開始されない場合、プロファイラーはプロファイリングセッションを終了します。 ルートプロセスが子プロセスをより長い遅延で開始する場合、これは問題になる可能性があります。
現在: ルートプロセスの実行中、プロファイラーはプロファイリングセッションを停止しません。 ルートプロセスが機能しなくなると、プロファイラーは 1 秒遅延アプローチに切り替わります。 (編集)
dotMemory 2021.3
.NET6 のサポート
dotMemory では、Windows、macOS、Linux 上の .NET 6 アプリケーションをプロファイリングできるようになりました。 Linux および macOS 上のアプリケーションをプロファイリングするには、dotMemory コマンドラインプロファイラーを使用する必要があることに注意してください。
AppleM1 のサポート
現在、dotMemory コマンドラインツールは、AppleM1 プロセッサーを搭載したコンピューターで動作します。 このツールは、.NET 6 アプリケーション(ネイティブモード)および .NET 5 アプリケーション(Rosetta 2 モード)のプロファイリングをサポートします。
今では、dotMemory は ETW イベントに基づいてメモリの割り当てに関するサンプリングデータを取得できます。 従来の(統計的な)割り当てデータ収集方法と比べると、サンプリングは細かくありませんが、いくつかのメリットがあります。サンプリングされた割り当てデータはパフォーマンスに影響を与えずに収集されます。 このデータの収集を明示的に有効化する必要はありません。常にオンになっています。 プロファイラーをすでに実行中のアプリケーションに接続した場合にも、サンプリングデータを収集できます。 この機能は Windows のみで利用できます。
これで、 サブシステム ビューを使用してメモリ割り振りデータを分析できます。 サブシステムは、同じタイプ、名前空間、アセンブリに属するすべてのメソッドをグループ化します。 結果のビューには、サブシステムによって作成されたオブジェクトと、各サブシステムのマージされた呼び出しツリーが表示されます。
パフォーマンスの向上
ドミネーターツリー(オブジェクト保持グラフ)の背後にあるアルゴリズムを完全に作り直しました。 オブジェクトセットに数億のオブジェクトが含まれている場合でも、dotMemory は数分で特定のビューを開きます。
dotMemory 2021.2
このリリースでは、メモリ割り当ての分析方法を引き続き改善しています。 メモリの割り当て ビューには、次の 2 つの追加ディメンションがあります。
メソッド を使用すると、メモリを割り当てたメソッドのプレーンリストを分析できます。
呼び出しツリー を使用すると、割り当て呼び出しツリーを分析できます。 ツリーの各ノードには、呼び出されたメソッドだけでなく、呼び出しによって割り当てられたオブジェクトも表示されます。
ビューフィルター(dotMemory ビューの上にある検索バー)がより柔軟で明確になります。
フィルターに検索スコープを絞り込むための追加オプションが追加されました:
#struct(値型のみ)、#c(型のみ)、#m(メソッドのみ)、#ns(名前空間のみ)。現在のコンテキストで可能なすべてのフィルターの組み込みヘルプを入手できます。
可能です:
オブジェクトデータをエクスポートするときにトラバース深度を指定します。
1 つ以上のタイプを選択し、これらのデータを 1 つのファイルにエクスポートします。
インスタンス数、 出力方向の参照、 到達不能なオブジェクト ビューからオブジェクトデータをエクスポートします。
さまざまな改善
コンソールプロファイラー: これで、サービスメッセージを使用したメモリ割り当てデータの収集を有効 / 無効にすることができます。
dotMemory でクリップボードにコピーされたスタックトレースが、ReSharper を使用して Rider/Visual Studio で自動的に開かれるようになりました。
さまざまなバグ修正。
dotMemory 2021.1
dotTrace のホーム画面を完全に作り直しました。 これで、新しいプロファイリングセッションの構成と開始、ワークスペースの操作、その他の基本的な操作の実行がはるかに簡単になりました。
これで、
gcoreまたはdotnet-dumpを使用して Linux システムで収集された .NETCore アプリケーションのダンプを分析できます。現在、dotMemory では、任意の時間間隔でメモリ割り当てを分析できます。 タイムラインで間隔を選択するだけで、 メモリの割り当て ビューに、この間隔で割り当てられたオブジェクトと、割り当てたスタックトレースが表示されます。
dotMemory 2020.3
.NET5 のサポート
dotMemory では、Windows、macOS、Linux 上の .NET 5 アプリケーションをプロファイリングできるようになりました。 Linux および macOS 上のアプリケーションをプロファイリングするには、dotMemory コマンドラインプロファイラーを使用する必要があることに注意してください。
dotMemory は、タイムラインデータを使用して、タイムライングラフ上に自動インスペクションを提供します。 現在、3 つのインスペクションが利用可能です。
ガベージコレクションの圧力が高い
Gen0 で固定されたオブジェクト
高速ラージオブジェクトヒープの成長率
.NET 5 では、固定されたオブジェクト(ヒープ内で移動できないオブジェクト)を格納するための個別のヒープセグメントが導入され、ヒープの断片化が発生しました。 dotMemory は、ヒープフラグメンテーションビューに固定されたオブジェクトヒープを表示します。 また、dotMemory は、プロファイリング中にピン留めされたオブジェクトヒープに割り当てられたメモリをリアルタイムで表示するようになりました。
さまざまなタイムラインの改善
ガベージコレクションは、メインタイムラインの別のグラフに表示されます。
タイムライン上で特定の時間範囲を選択できるようになりました。選択した時間範囲の GC 時間と確保メモリ量の情報が表示されます。
パフォーマンスの向上。
dotMemory 2020.2
dotMemory コマンドラインプロファイラーは Linux と macOS をサポートします。
Linux (GLIBC_2.23 以降を搭載したすべてのディストリビューション) 用の dotMemory コマンドラインプロファイラーを使用すると、ARM64 システム上のアプリケーションをプロファイリングできます。
固定されたオブジェクトを個別のオブジェクトセットとして開くことができます。
GC ルートから到達できないオブジェクトは、個別のオブジェクトセットとして開くことができます。
dotMemory 2020.1
バグ修正と安定性の改善。
内部データ形式も作り直したことに注意してください。 つまり、dotMemory 2020.1 スナップショット形式は以前のバージョンと互換性がありません。 同時に、今後のリリースでいくつかの新機能を導入できるようになります。
dotMemory 2019.3
新しい 自己プロファイリング API。
セルフプロファイリング API(アプリケーションがプロファイリングセッションを自分で初期化して開始できるようにする API)は、より便利で使いやすくなります。 セルフプロファイリング API は、NuGet パッケージとして配布されます。
.json ファイル(.bson、.hex、.txt も利用可能)に インスタンスの詳細をエクスポートできる機能。
オブジェクトインスタンスの仮想メモリアドレスを表示できるようになりました。
dotMemory 2019.2
dotMemory コンソールプロファイラーの改善。
dotMemory 2019.2 は、リモートプロファイリングのサポートを停止します。 適切な代替品を提供するために、dotMemory コンソールプロファイラーを大幅に改善しました。
コンソールプロファイラーは、スタンドアロン dotMemory とほぼ同等です。 コンソールツールを使用して、次のスナップショットを取得できます。
.NET Core アプリケーション
IIS Express でホストされるアプリケーション
Windows サービス
UWP アプリケーション
WCF サービスライブラリ
または、プロファイリングセッションの実行後に起動される .NET アプリケーション。
これで、コンソールプロファイラーは、これが可能になった直後にメモリスナップショットを取得できます。 この機能は、ベースラインスナップショットを取得して比較に使用する場合に役立ちます。
オンデマンドスナップショット処理。
データが完全に処理されるまで待たずに、スナップショットの操作を開始できます。
.NET Core3.0 の完全サポート。
dotMemory は .NET Core 3.0 プレビュー 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 Core、ASP.NET Core、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 の最新バージョンで利用可能なものと同様のホームビューを持つようになりました。