dotMemoryの新機能

このページでは、dotMemory の最新の更新と変更内容を説明します。

dotMemoryをダウンロード

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

ユーザーインターフェース 2024.3

2024.3 アップデートでは UX/UI 関連の多数の小さな改善を行い、全オペレーティングシステムの全 dotMemory バージョンで統一した外観と使い心地を提供するための最後の仕上げを行いました。

オブジェクトインスタンスの Creation Stack Trace(作成のスタックトレース)ビュー 2024.3

過去に UI を再設計した際に廃止された Creation Stack Trace(作成のスタックトレース)ビューが復活しました。 このビューにはオブジェクトが作成されるまでの関数のコールスタックが表示されるため、メモリに関する問題の根本的原因を発見しやすくなっています。

オブジェクトセットの Back Traces(バックトレース)ビュー 2024.3

オブジェクトセットの Back Traces(バックトレース)ビューも再実装しました。 このビューの呼び出しツリーは反転しており、特定のオブジェクトセットを作成した関数を始点とし、呼び出しチェーンを下から上にさかのぼる呼び出しチェーンが表示されます。

ドミネーターをつららチャート形式で可視化する機能 2024.3

ドミネーターツリーをつららチャート形式で表示し、ドミネーターと保持オブジェクトのメモリ消費量を確認できるようになりました。 この機能は Windows、Linux、および macOS のスタンドアロンバージョンの dotMemory と JetBrains Rider の dotMemory の両方で使用できます。

サンバーストチャート形式 Call Tree(呼び出しツリー)の全 OS 対応 2024.3

Call Tree(呼び出しツリー)をサンバーストチャート形式で可視化する機能はバージョン 2024.2 で導入されましたが、その機能を Windows、Linux、および macOS のスタンドアロンバージョンの dotMemory と JetBrains Rider の dotMemory の両方で使用できるようになりました。

インスタンス検索の改善 2024.2

Instances(インスタンス)ビューに新しいフィルターオプションを追加しました。

  • 文字列値による検索: フィルターフィールドに文字列値を入力すると、dotMemory が一致する文字列をハイライトするようになりました。 これにより、特定の文字列インスタンスをその内容を基に見つけやすくなりました。
  • 文字列値の正規表現サポート: 正規表現を使用して高度な検索を行えるようになりました。 たとえば、^nAsso.{5,}ID$nAssociatedObjectID.nAssociatedObjectID に一致します。
  • オブジェクトアドレスによる検索: オブジェクトインスタンスをそのメモリアドレスで検索することも可能です。 これは、特定のオブジェクトを直接追跡する場合に役立ちます。

これらの機能は、スタンドアロン版の dotMemory と JetBrains Rider の dotMemory で利用できます。

Linux および macOS 版 dotMemory の改善 2024.2

従来は Windows 版のみで提供されていた機能が Linux 版と macOS 版の dotMemory に導入されました。

  • 自動メモリインスペクション: Linux と macOS の dotMemory に Inspections(インスペクション)ビューが追加され、自動検出されたメモリの問題がそこに表示されるようになりました。
  • ワークスペース間でのスナップショットの比較: 異なるプロファイリングセッションのスナップショットを比較できるようになりました。

これらの機能は、スタンドアロン版の dotMemory と JetBrains Rider の dotMemory で利用できます。

サンバーストチャートによる Call Tree(呼び出しツリー)の可視化 2024.2

Call Tree(呼び出しツリー)を Sunburst(サンバースト)チャートとして表示し、メモリ割り当て量が最も多い関数をハイライトできるようになりました。 この機能は、スタンドアロン版の dotMemory(Linux および macOS)と JetBrains Rider の dotMemory(Windows、Linux、macOS)で使用できます。

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 のビューと同じであり、特定期間をさらに深く解析するのに役立ちます。

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 日間体験版をご利用可能です