dotMemoryの新機能

このページでは、dotMemoryとdotMemory Unitの最近のリリースでの更新内容をご案内します。 注目すべき更新には、コマンドラインのプロファイリングツール、.NET アプリケーションのサポート、メモリダンプ解析などが挙げられます。

dotMemoryをダウンロード

無料 30 日間体験版をご利用可能です

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

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

このリリースでは、MAUI フレームワークベースのアプリケーションをプロファイリングできるようになりました。

現在、dotMemory は Windows の .NET 7.0 以上をターゲットとする WinUI アプリケーションのプロファイリングをサポートしています。

このサポートは、dotMemory スタンドアロンと Rider および ReSharper に組み込まれた dotMemory に提供されます。

macOS のサポートの改善 2024.1

  • dotMemory のスタンドアロンバージョンで、実行可能ファイルの代わりにアプリケーションバンドル(.app)を指定できるようになりました。
  • Rider の dotMemory で macOS 実行構成をプロファイリングできます。 サポート対象のターゲットフレームワークは net7.0-macosnet8.0-macos です。
Linux および macOS 用の dotMemory の新しいビュー

Linux および macOS 用の dotMemory の新しいビュー 2024.1

Linux と macOS の dotMemory のスタンドアロンバージョンに以下が導入され、Windows 版に近づきました。

  • オブジェクトセット解析用の Similar Retention(同様の保持)ビュー
  • ドミネーターオブジェクト解析用のサンバーストダイアグラム

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

凍結オブジェクトヒープのイミュータブルオブジェクトに関する情報は、タイムライン、Heap Fragmentation(ヒープの断片化)ダイアグラム、および Generations(生成)ビューに表示されます。

Linux および macOS のスタンドアロン版 dotMemory 2023.3 ベータ

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

Linux でのプロセスダンプの解析 2023.3

Linux の dotMemory でプロセスダンプを通常のスナップショットとしてインポートし、解析できるようになりました。 Linux バージョンの dotMemory は Linux OS の実行プロセスから収集されるダンプのみをインポートできることに注意してください。

JetBrains Rider のスナップショット解析 2023.2

2023.2 以前において Rider 内で dotMemory の使用ができたのは、メモリの割り当て解析を目的とする場合だけでした。 2023.2 では dotMemory のスタンドアロンバージョンと同様に Rider 内でメモリスナップショットの収集と解析を実行できます。

  • スナップショット解析は Windows / Linux / macOS に対応しています。
  • Windows ではプロセスダンプのインポートと解析も可能です。
  • 自動的なスナップショットのインスペクションと作成のスタックトレースビューなど、一部の機能とビューは使用できません。

Windows ARM64 のサポート 2022.3

dotMemory を ARM64 CPU で動作する Windows で使用できるようになりました。 これは、dotMemory スタンドアロン、Rider の dotMemory、Visual Studio の dotMemory、および dotMemory コマンドラインツールの全バージョンに当てはまります。

Linux ARM32 のサポート 2022.3

dotMemory コマンドラインプロファイラーを ARM32 CPU で動作する Linux で実行できるようになりました。 サポートされているフレームワークは .NET Core 3.1 と .NET 5.0–7.0 です。

JetBrains Rider の dotMemory 2022.3

Windows に加えて、Linux および macOS 版の JetBrains Rider でも dotMemory を使用できるようになりました。 Run(実行)ウィジェットと Run(実行)| Switch profiler configuration(プロファイラー構成の切り替え)メニューには、Memory (sampled allocations)(メモリ(サンプリングした割り当て)) Memory (full allocations)(メモリ(全割り当て))という 2 つの新しいプロファイリングモードが追加されています。 これらのモードの詳しい相違点については、dotMemory のヘルプをご覧ください。

Run(実行)メニューから実行中のプロセスにプロファイラーをアタッチして、Timeline Graph(タイムライングラフ)がリアルタイムに展開する様子を確認できます。 Memory Allocations(メモリ割り当て)ビューを開く間隔を選択します。これは dotMemory Standalone と同じで、 特定期間の割り当てられたオブジェクトと割り当て呼び出しツリーを解析できます。

残念ながら、メモリスナップショットの収集はこのバージョンでも未対応です。

dotMemory コマンドラインプロファイラーの改善 2022.3

コマンドラインプロファイラーに --saving-mode 引数が追加され、dotMemory ワークスペースを保存するタイミングを設定できるようになりました。

JetBrains Rider の dotMemory 2022.2

dotMemory が JetBrains Rider で使用できるようになりました。

  • Run(実行)ウィジェットと、メインメニューの Run(実行)| Switch profiler configurations(プロファイラー構成の切り替え)には、Memory (sampled allocations)(メモリ(サンプリングした割り当て))と Memory (full allocations)(メモリ(全割り当て))という 2 つの新しいプロファイリングモードが追加されています。 これらのモードの違いに関する詳細については、dotMemory のヘルプをご覧ください。
  • Run(実行)メニューから、実行中のプロセスにプロファイラーをアタッチできます。
  • 間隔を選択して Memory Allocation(メモリ割り当て)ビューを開くと、Timeline Graph(タイムライングラフ)がリアルタイムで展開する様子を見ることができます。 dotMemory Standalone のビューと同等で、特定期間の解析をより詳しく調べることができます。

dotMemory プラグインではスナップショットを収集できません。また、2022.2 リリースでは Windows でのみ動作します。

musl ベース Linux ディストリビューションのサポート 2022.1

dotMemory コマンドラインツールで Alpine バージョン 3.13 ~ 3.15 がサポートされるようになりました。 次の CPU とフレームワークがサポートされています。

  • x64: .NET Core 3.1、.NET 5.0 ~ 6.0
  • arm64: .NET 5.0 ~ 6.0

プロファイリング API の改善 2022.1

プロファイリング API を使用してスナップショットを取得する際に、DotMemory.GetSnapshot("snapshot name"); を使用してスナップショット名を指定できるようになりました。

この名前は、dotMemory の Home(ホーム)| Snapshots(スナップショット)ページに表示されます。

ドラッグアンドドロップによるアプリケーションへの接続 2022.1

専用のアイコンをアプリケーションウィンドウにドラッグするだけで、実行中のアプリケーションにプロファイラーを接続できるようになりました。

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

dotMemory コマンドラインツールで、スナップショットを保存する際の進捗が表示されるようになりました。

Similar Retention ビューのパフォーマンス改善  2022.1

Similar Retention ビューでのデータ処理が大幅に高速化されました。

Apple Silicon プロセッサのサポート  2021.3

dotMemory のコマンドラインツールが Apple Silicon プロセッサを使用するコンピューターで動作するようになりました。 dotMemory CLT を使用して、.NET 6 アプリケーション(ネイティブモード)と .NET 5 アプリケーション(Rosetta 2 モード)をプロファイリングできます。

パフォーマンスの改善 2021.3

ドミネーターツリー(オブジェクト保持グラフ)の内部アルゴリズムを完全に作り直しました。 オブジェクトセットに非常に多くのオブジェクトが含まれている場合でも、dotMemory は特定のビューを数分で開くことができます。

メモリ割り当てデータのサンプリング 2021.3

dotMemory が ETW イベントに基づいて、メモリの割り当てに関するサンプリングデータを取得できるようになりました。 従来の(統計的な)割り当てデータの収集方法と比べると、サンプリング精度は劣るものの以下のような数多くのメリットがあります。

  • サンプリングした割り当てデータは、パフォーマンスに悪影響を及ぼすことなく収集されます。
  • このデータ収集は常に動作しているため、明示的に有効化する必要はありません。
  • サンプリングした割り当てデータは、プロファイラーをすでに実行中のアプリケーションに接続する際にも収集されます。

この機能は Windows でのみ提供されていることに注意してください。

Subsystems(サブシステム)ビュー 2021.3

Subsystems(サブシステム)ビューを使用して、メモリの割り当てデータを解析できるようになりました。 サブシステムは、同じ型、名前空間、またはアセンブリに属するすべてのメソッドをグループ化します。 生成されるビューには、サブシステムによって作成されたオブジェクトと各サブシステムごとにまとめられた呼び出しツリーが表示されます。

メモリ割り当て解析の更新 2021.2

このリリースでは、引き続き、メモリの割り当てを解析する方法の改善に取り組みました。 Memory Allocation ビューに新しいタブが 2 つ追加されています。

  • Methods タブでは、メモリを割り当てたメソッドのプレーンリストを解析することができます。
  • Call Tree タブでは、割り当て呼び出しツリーを解析できます。 ツリーの各ノードには、呼び出されたメソッドだけでなく、呼び出しによって割り当てられたオブジェクトが表示されます。

フィルタの改善 2021.2

dotMemory ビューの上部にある検索バーはより自由な設定が可能になり、使いやすくなりました。

  • フィルタには、検索スコープを絞り込むための、#struct(値の型のみを検索)、#c(型のみを検索)、#m(メソッドのみを検索)、#ns(名前空間のみを検索)という追加オプションがあります。
  • 特定のコンテキストで使用でできるヘルプがすべてのフィルタに対して用意されています。

オブジェクトエクスポートの改善 2021.2

以下を行えるようになりました。

  • オブジェクトデータをエクスポートする際に横断の深度を指定できます。
  • 1 つ以上の型を選択して、そのデータを単一のファイルにエクスポートできます。
  • インスタンスOutgoing References、および Unreachable Objects ビューからオブジェクトデータをエクスポートできます。

コンソールプロファイラーの改善 2021.2

メモリの割り当てデータの収集の有効化と無効化にサービスメッセージを使用できるようになりました。

スタックトレースのクリップボードへのコピー 2021.2

dotMemory でクリップボードにコピーされたスタックトレースは、ReSharper が統合された Rider / Visual Studio で自動的に開かれるようになりました。

新しいホーム画面 2021.1

dotTrace / dotMemory のホーム画面を完全に作り直しました。これにより、新規プロファイリングセッションの構成と開始、スナップショットの処理、その他の基本操作の実行がはるかに楽になりました。

Linux ダンプのサポート

Linux ダンプのサポート 2021.1

Linux システムで gcore を使用して収集した .NET Core アプリケーションのダンプを解析できるようになりました。

メモリ割り当て解析の改善

メモリ割り当て解析の改善 2021.1

dotMemory が任意の期間に対してメモリ割り当て解析を実行できるようになりました。 タイムラインで期間を選択すると、この期間に割り当てられたオブジェクトと、オブジェクトを割り当てたスタックトレースが Memory Allocation(メモリ割り当て)ビューに表示されます。

dotMemoryをダウンロード

無料 30 日間体験版をご利用可能です