dotMemory 2025.3 ヘルプ

インスタンス数

インスタンス数ビューは、どのインスタンスがオブジェクトセットを構成しているかを示します。より詳細な分析のために特定のインスタンスを選択するための手段としてこのビューを使用してください。

インスタンスのリストは、以下の列で構成されています。

名前

説明

タイプ

型名。

アドレス

インスタンスの仮想メモリアドレス。

バイト数

インスタンスのサイズ(バイト単位)。

保持されたバイト数

インスタンスによって排他的に保持されるオブジェクトの全体サイズ (バイト単位)。

サンプル

Instances view example

オブジェクトのフィルター

分析に関係のないオブジェクトをタイプまたは文字列値で除外できます。

リストを絞り込む

  • 希望する文字列パターンの入力を開始します。dotMemory は一致する文字列をハイライトします。

次のヒントを参考にすれば、より効率的な検索を行うことができます。

  • キャメルハンプを使用してください。例: fo は、System.Drawing.Font 型と MS.Utility.FrugalObjectList 型のオブジェクトを返します。

  • String タイプのインスタンスの場合、文字列値で検索できます。フィルターフィールドに任意の文字列値を入力すると、dotMemory は一致する文字列をハイライトします。

  • 文字列値の場合、正規表現を使用できます。例: ^Client.* は、ClientRequestClientController など、Client で始まるすべての文字列と一致します。

  • メモリアドレスでオブジェクトインスタンスを検索することもできます。これは、特定のオブジェクトを直接追跡する場合に便利です。

  • ワイルドカードなどの特殊シンボルを使用してください。完全なリストは以下の表に示されています。

特殊シンボルとフィルターの例

シンボル

説明

サンプル

*

ワイルドカード

*
セット内のすべてのオブジェクト

sys.*.data
パターンに一致するすべてのタイプと名前空間。例: System.DataSystem.Windows.Controls.DatagridSystem.Windows.Data.Binding

sys.*.data.
パターンに一致する名前空間のみたとえば System.Windows.Data.Binding なく System.Windows.Controls.Datagrid

配列

[]

配列のみを残す

str[]
それらの型または名前空間に str を含む配列。例: String[]

[,
[,,
...
または
翻訳
翻訳
...

指定されたまたはそれ以上の配列(角括弧が閉じていない場合)

str[,,
型または名前空間に str を含む次元 3 以上の配列。例: String[,,] および String[,,,]

str[,,]
型または名前空間に str を含む 3 次元配列。例: String[,,]

!a

結果から配列を除外する

!a str
型または名前空間に str を含むオブジェクト(配列を除く)たとえば String なく String[]

ランク付けされた配列

[N..
[N..]
[N..M]
[N..M, X..Y]
NMXY が整数である ...

指定された数の要素を持つ配列のみを残す

byte[10..100]
Byte をその型または名前空間に 10 - 100 個の要素を持つ配列。例: Byte[98]

byte[10..100, 25..
Byte 型または名前空間に 2 次元(またはそれ以上)次元の配列。最初の次元に 10 - 100 個の要素を持ち、2 番目の要素に 25 を超える要素を含みます。たとえば Byte[98, 30, 1000] なく Byte[98]

範囲が指定されていない場合、フィルターはテキストフィルターとして扱われます。例: byte[1Byte[195]Byte[1, 50] と一致します。
byte[1*5]Byte[13853] と一致します。

汎用型引数

<

ジェネリクス型引数を持つ型だけを残す

str<
その型または名前空間に str を含み、総称型引数を持つオブジェクトのみ。たとえば FileStreamStorage<Char> なく List<String>

<str
その総称型引数に str を含むオブジェクトのみ。たとえば List<String> なく FileStreamStorage<Char>

<,
<,,
...
または
翻訳
翻訳
...

指定された数のジェネリクス型引数を持つオブジェクトのみを残す

fun<,,>
型または名前空間に fun を含み、3 つのジェネリクス型引数を持つオブジェクト。例: Func<String, Object, Object>

fun<str,,task
型または名前空間に fun を含み、パターンに一致する 3 つの引数または汎用引数を持つオブジェクト。例: Func<Stream, IAsyncResult, TaskResult, EventArgs>

!g

検索範囲からジェネリクス型引数を除外する

!g str
その型または名前空間に str を含むオブジェクト(総称型引数を持たない)。たとえば String なく List<String>

#c
#struct
#m
#ns

タイプ、値タイプ、メソッド、名前空間で検索します。

#ns Feature
名前空間に Feature を含むオブジェクト。

さらに分析するオブジェクトを選択する

インスタンス数ビューでは、さらに分析するために次の項目を選択できます。

特定のインスタンスを選択するには

  • 以下のいずれか 1 つを実行します:

    • リスト内のインスタンスをダブルクリックします。

    • インスタンスを右クリックし、このインスタンスを開くを選択します。

    この後、セットからのインスタンスサブジェクトが分析パスに追加され、特定のインスタンスビューを使用してインスタンスをより詳細に分析できるようになります。

分析されたオブジェクトセットによって排他的に保持されるオブジェクトを選択するには

  • Open retained objects このセットによって保持されている開いているオブジェクトボタンをクリックします。

    その後、排他的に保持されるオブジェクト件名が分析パスに追加され、目的のオブジェクトのリストが型別にグループ化ビューに表示されます。

2024 年 7 月 24 日

関連ページ:

最初にユーザーインターフェースを確認する

dotMemory での作業は、ある種の犯罪捜査 (dotMemory によるメモリ分析) のようなものだと考えてください。ここでの主なアイデアは、データを収集し (1 つ以上のメモリスナップショット)、多数の容疑者 (問題を引き起こす可能性のある解析対象) を選ぶことです。まず容疑者のリストから始めて、このリストを絞り続けます。有罪判決を下すまで、1 人の容疑者が別の容疑者のところに連れて行ってくれるかもしれません。この分析コンセプト (調査範囲を大きなエンティティから小さなエンティティに絞り...

タイプ

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

同様の保持

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

呼び出しツリー

呼び出しツリービューには、選択したオブジェクトセットの作成に関与するスタックトレースが表示されます。このビューを使用して、「どの関数がオブジェクトを作成したか」を問い、メモリを過剰に割り当てる関数を特定します。分析を簡素化するために、dotMemory では、コールツリーをつららまたはサンバーストチャートとして視覚化できます。呼び出しツリー:呼び出しツリーの各ノードは関数呼び出しを表します。関数名の横の数字は、呼び出しによって割り当てられたオブジェクトのサイズ、またはこれらのオブジェクトの数を...