dotMemory 2024.1 ヘルプ

dotMemory の新機能

dotMemory 2024.1

  • MAUI アプリケーションのサポート

    現在、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 上の dotMemory および macOS のスタンドアロンバージョンは、Windows 版にさらに近づき、次の機能を提供します。

    • オブジェクトセットを分析するための同様の保持ビュー

    • ドミネーターオブジェクトを分析するためのサンバーストダイアグラム

  • 凍結オブジェクトヒープのサポート

    凍結オブジェクトヒープ内の不変オブジェクトに関する情報は、タイムライン、ヒープフラグメンテーションダイアグラム、および世代ビューに表示されます。

dotMemory 2023.3

  • Linux および macOS の dotMemory スタンドアロン

    Linux および macOS オペレーティングシステム上で dotMemory のスタンドアロンバージョンを実行できるようになりました。

  • 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 アプリケーションをプロファイリングできるようになりました。

    次の問題に直面する可能性があることに注意してください。

    • アプリケーションが動的アセンブリを作成する場合、プロファイラーはこれらのアセンブリからのデータ (メソッド名とオブジェクトの種類) を表示しません。これらは Unresolved として表示されます。

    • プロファイラーをアタッチしてアプリケーションをプロファイリングすると、セッション中にアプリケーションがクラッシュする可能性があります。

    どちらの問題も、今後の .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 の JetBrains Rider および macOS で 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

    プロファイリング API を使用してスナップショットを取得するときに、DotMemory.GetSnapshot("snapshot name"); を使用してスナップショット名を指定できるようになりました。名前は dotMemory ホーム | スナップショットページに表示されます。

  • 類似保持ビューのパフォーマンスの向上

    同様の保持ビューは、データをはるかに高速に処理するようになりました。

  • コマンドラインツールの改善

    dotMemory コマンドラインツールは、スナップショットを保存するときに進行状況を表示するようになりました。

  • 子プロセスのプロファイリングの改善

    プロファイルする多数の管理対象子プロセスを作成するルートプロセスをプロファイルするとします。ルートプロセス自体は、何らかの理由でプロファイリングから除外されます(たとえば、シェルスクリプト、ネイティブプロセス、単にプロセスフィルターを使用して除外する場合があります)。

    : プロファイラーは、フィルターに一致するすべての子プロセスのプロファイリングを開始します。子プロセスが終了すると、プロファイラーは 1 秒間待機します。この時間内に新しい子プロセスが開始されない場合、プロファイラーはプロファイリングセッションを終了します。ルートプロセスが子プロセスをより長い遅延で開始する場合、これは問題になる可能性があります。

    現在 : ルートプロセスの実行中、プロファイラーはプロファイリングセッションを停止しません。ルートプロセスが機能しなくなると、プロファイラーは 1 秒遅延アプローチに切り替わります。(編集)

dotMemory 2021.3

  • .NET6 のサポート

    dotMemory では、Windows、macOS、Linux で .NET6 アプリケーションのプロファイルを作成できるようになりました。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 のホーム画面を完全に作り直しました。これで、新しいプロファイリングセッションの構成と開始、ワークスペースの操作、その他の基本的な操作の実行がはるかに簡単になりました。

  • Linux ダンプのサポート

    これで、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 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 コンソールプロファイラーを大幅に改善しました。

    1. コンソールプロファイラーは、スタンドアロン dotMemory とほぼ同等です。コンソールツールを使用して、次のスナップショットを取得できます。

      • .NET Core アプリケーション

      • IIS Express でホストされるアプリケーション

      • Windows サービス

      • UWP アプリケーション

      • WCF サービスライブラリ

      • または、プロファイリングセッションの実行後に起動される .NET アプリケーション。

    2. これで、コンソールプロファイラーは、これが可能になった直後にメモリスナップショットを取得できます。この機能は、ベースラインスナップショットを取得して比較に使用する場合に役立ちます。

  • オンデマンドスナップショット処理。

    データが完全に処理されるまで待たずに、スナップショットの操作を開始できます。

  • .NET Core3.0 の完全サポート。

    dotMemory は、.NET Core 3.0 Preview7 プロセスに接続できるようになりました。

  • 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

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 2016.3

dotMemory 2016.2

dotMemory 2016.1

  • 閲覧履歴を移動します。

dotMemory 10

関連ページ:

プロファイル MAUI アプリケーション

MAUI アプリケーションは、.NET マルチプラットフォームアプリ UI (MAUI) フレームワークを使用して構築されたクロスプラットフォームソリューションであり、開発者が単一の共有コードベースを使用して Android、iOS、Windows、macOS 用のアプリケーションを作成できるように設計されています。現在、dotMemory は以下をサポートしています。Windows – .NET 7.0 以降をターゲットとする WinUI アプリケーション。dotMemory をスタンドアロン...

同様の保持によるグループ

同様の保持によるグループビューは、保存パスの類似性によってオブジェクトをグループ化します。オブジェクトセットごとに、ビューにはルートへの最短パスが 2 つ表示されます。dotMemory は、さまざまな最短パスの中から、互いに最も異なる 2 つのパスのみを選択します。同様の保持によるグループビューを使用すると、同じ型のオブジェクトが論理的にどこに属しているかを区別できます。例: 配列内のいくつかの int 変数は同じ保持パスを持ちますが、これは他の int 配列の変数とは異なります。同様の保持に...

メモリ割り当てを分析する

メモリの割り当てビューを使用して、特定の時間間隔での割り当てを分析します。この間隔で割り当てられたオブジェクトと、これらのオブジェクトを割り当てた関数を調べます。ビューでは、プロファイリングが進行中の場合でも割り当てデータを表示できます。メモリスナップショットは必要ありません。データ収集モード:dotMemory は、次の 2 つのモードのいずれかでメモリ割り当てデータを収集できます。サンプリング (デフォルト、Windows のみ) dotMemory は限られた割り当てデータを収集します。オ...

型別にグループ化

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

オブジェクトセットの分析

オブジェクトセットは、特定の条件によってグループ化されたオブジェクトの数です。例: Gen 2 のすべてのオブジェクト、他の特定のオブジェクトによって保持されているすべてのオブジェクト、特定の呼び出しによって割り当てられたすべてのオブジェクトなど。オブジェクトセットは調査の主な対象です。オブジェクトセットの分析を支援するために、dotMemory では、このセクションで説明するさまざまなビューでオブジェクトセットを表示できます。型別にグループ化、ドミネーターによるグループ、同様の保持によるグルー...

分析の概要

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