类型
类型 视图显示了选定对象集中的对象列表。 为了方便起见,所有对象按其类型分组:列表中的每一行代表一个特定类型。 该类型的所有对象都计入此行。 您可以使用 类型 视图来识别占用过多内存或不应存在于内存中的对象。
列表包含以下列:
名称 | 描述 |
|---|---|
类型 | 类型名称. |
对象数量 | 相同类型对象的数量。 |
字节 | 对象的总体浅表大小(以字节为单位)。 |
最小保留字节数 | 所有独占保留对象的总体大小(以字节为单位)。 这是删除所有某种类型对象后将释放的字节数的较低估计值。 |
示例

对列表中的对象进行分组

为了方便,您可以通过四种不同的方式对列表进行分组:
纯列表
对象以简单列表的形式显示。 这是识别内存使用量最高的对象的最简单方法。
按命名空间分组
对象按其命名空间分组。 当您想专注于确定自己类中的问题时,这种分组方式非常方便。
按程序集分组
对象按其来源的程序集分组。 这种分组方式也可用于将您自己的类与系统类分开。
按接口分组
对象按其实现的接口分组。 如果一个对象实现了多个接口,它将在每个实现的接口下显示。
筛选对象
您可以通过类型筛选掉对分析无关的对象。
缩小列表范围
开始输入所需的字符串模式。 dotMemory 将高亮显示匹配的字符串。
您可以通过以下提示使搜索更高效:
使用 CamelHumps。 例如,
fo将返回System.Drawing.Font和MS.Utility.FrugalObjectList类型的对象。使用 特殊符号 ,例如通配符和其他符号。 完整列表显示在下表中。
- 特殊符号和筛选示例
符号
描述
示例
*通配符
*
集合中的所有对象sys.*.data
所有匹配模式的类型和命名空间。 例如,System.Data、System.Windows.Controls.Datagrid和System.Windows.Data.Binding。sys.*.data.
仅匹配模式的命名空间。 例如,System.Windows.Data.Binding,但 不是System.Windows.Controls.Datagrid。数组
[]仅保留数组
str[]
包含str的类型或命名空间中的数组。 例如,String[]。[,[,,...
或[,][,,]...仅保留指定维度或更高维度(如果括号未闭合)的数组
str[,,
包含str的类型或命名空间中维度为 3 或更高的数组。 例如,String[,,]和String[,,,]。str[,,]
包含str的类型或命名空间中的三维数组。 例如,String[,,]。!a从结果中排除数组
!a str
包含str的类型或命名空间中的对象(不包括数组)。 例如,String,但 不是String[]。泛型类型参数
<仅保留具有泛型类型参数的类型
str<
仅包含str的类型或命名空间并具有泛型类型参数的对象。 例如,FileStreamStorage<Char>,但 不是List<String>。<str
仅包含str的泛型类型参数中的对象。 例如,List<String>,但 不是FileStreamStorage<Char>。<,<,,...
或<,><,,>...仅保留具有指定数量泛型类型参数的对象
fun<,,>
包含fun的类型或命名空间并具有三个泛型类型参数的对象。 例如,Func<String, Object, Object>。fun<str,,task
包含fun的类型或命名空间并具有三个或更多匹配模式的泛型类型参数的对象。 例如,Func<Stream, IAsyncResult, TaskResult, EventArgs>。!g从搜索范围中排除泛型类型参数
!g str
包含str的类型或命名空间中不具有泛型类型参数的对象。 例如,String,但 不是List<String>。#c#struct#m#ns按类型、值类型、方法或命名空间搜索。
#ns Feature
包含Feature的命名空间中的对象。
选择对象以进行进一步分析
在 类型 视图中,您可以选择以下主题以进行进一步分析:
选择特定类型的对象
执行以下操作之一:
双击列表中的类型。
右键点击类型并选择 打开此对象集。
之后,选定的对象集将添加到 分析路径 ,您可以使用其他对象集视图更详细地分析这些对象。
选择仅由分析对象集独占保留的对象
点击
打开由此集合保留的对象 按钮。之后, 独占保留的对象 主题将被添加到 分析路径 中,并且所需对象的列表将在 按类型分组 视图中显示。