.NET 内存分配
.NET 内存分配 过滤器显示了您的应用程序如何将内存分配到托管堆。 例如, 调用树 显示了特定调用分配了多少内存(以 MB 为单位)。
选择 .NET 内存分配 事件以分析过多的内存流量和垃圾回收。 后者是导致 UI 卡顿的主要原因之一,因为在垃圾回收期间主线程可能会被挂起。
请注意,只有当分配的内存总大小超过 100 KB 时,才会引发分配点事件。 例如,在分析期间,一个线程分配了五个 50 KB 的内存块。 在这种情况下,dotTrace 只会检测到两个 100 KB 的分配。

选择 .NET 内存分配 主题后,您可以使用 .NET 内存分配:堆 过滤器微调结果。
.NET 内存分配:堆
.NET 内存分配:堆 子过滤器用于显示分配到小对象堆和大对象堆的内存分布。 关于分配到 LOH 的信息可以帮助您评估应用程序如何使用大型数据集合。 这对于性能分析可能很重要,因为 LOH 不会自动压缩,随着时间推移会变得碎片化。
作为过滤器, .NET 内存分配:堆 可用于过滤出分配到特定堆的点事件。 例如,如果您想确定分配内存到 LOH 的方法,请在 事件 过滤器中选择 .NET 内存分配 ,并在 .NET 内存分配:堆 中选择 大对象堆。 这些方法将显示在 调用堆栈 窗口中的 热点。

堆名称: 小对象堆 或 大对象堆。
堆中分配的对象大小。
堆中分配的对象大小相对于总分配内存的百分比。
例如,您的应用程序有两个线程:Thread#1 和 Thread#2。 在分析期间,Thread#1 分配了 8 MB 到 SOH,1 MB 到 LOH。 Thread#2 分配了 1 MB 到 LOH。 这两个线程的 事件 筛选器将如下所示:
...
.NET 内存分配 10 MB
...
.NET 内存分配:堆 过滤器将如下所示:
小对象堆 8 MB 80.00%
大对象堆 2 MB 20.00%
应用 .NET 内存分配:堆 过滤器
在过滤器中选择所需的堆。
选择堆后,其他过滤器将仅显示分配到所选堆的点事件。 例如, 热点 在 调用堆栈 窗口中将显示在堆中分配对象的方法列表。

.NET 内存分配:类型
.NET 内存分配:类型 子过滤器用于显示分配到特定类型对象的内存分布。 此信息可能有助于您识别在选定时间范围内分配的对象类型。
作为过滤器, .NET 内存分配:类型 可用于过滤出分配特定类型对象的点事件。 例如,如果您想确定分配字符串的对象的方法,请在 事件 过滤器中选择 .NET 内存分配 ,并在 .NET 内存分配:类型 中选择 System.String。 这些方法将显示在 调用堆栈 窗口中的 热点。

类型名称。
对象的大小。
特定类型对象的大小相对于总分配内存的百分比。
应用 .NET 内存分配:类型 过滤器
在筛选器中选择所需的类型。
选择类型后,其他过滤器将仅显示分配此类型对象的点事件。 例如, 热点 在 调用堆栈 窗口中将显示分配所选类型对象的方法列表。
