处理内存
要分析内存,首先需要获取内存转储(在 dotMemory Unit 中称为 内存检查点或 快照)。 要创建内存检查点,您应使用静态 dotMemory 类型的 Check 方法。 因此, dotMemory.Check 是几乎所有内存测试的基本起点。
由 dotMemory.Check 返回的 MemoryCheckPoint 实例可用作与其他检查点进行比较的基线,或用于检查检查点之间的内存流量。 分别参见 比较快照 和 处理流量。
传递给 dotMemory.Check 方法的 lambda 表达式允许根据特定条件对内存进行切片和分解。 传递给该 lambda 的 Memory 类型实例包含当前执行点的所有内存数据。 使用它获取特定对象的数据并过滤流量数据。 分别参见 处理对象集 和 处理流量。
示例
例如,在下面的示例中,传递给 dotMemory.Check 方法的 memory 对象和 Memory 类型包含当前执行点的所有内存数据。 传递给 memory.GetObjects 方法的 lambda 表达式根据某个条件返回一组对象(所有 Foo 类型的对象)。
在下一个示例中,我们在运行用户方法 Foo.Bar() 之前创建了一个内存检查点,然后(在用户方法完成工作后)创建了下一个检查点,并断言检查点之间的流量未超过 1000 字节。
MemoryCheckPoint 结构体
表示某个执行点的内存数据引用。 使用此引用比较在不同执行点获取的数据,或获取两个点之间的内存流量数据。 由 dotMemory.Check 方法返回一个 MemoryCheckPoint 类型的实例。
dotMemory 静态类
dotMemory 方法
名称 | 描述 |
|---|---|
| 返回一个 MemoryCheckPoint 类型的实例,该实例是当前执行点内存数据的引用。 使用此引用作为与其他点获取的内存数据进行比较的基准。 |
| 返回当前执行点的内存数据引用,并允许使用 Assert 语句检查这些数据。 |
Memory 类
表示某个执行点的内存数据。 Memory 类的对象用于借助 Assert 语句访问内存数据。 这些语句通过 lambda 表达式传递给 dotMemory.Check 方法。
Memory 方法
名称 | 描述 |
|---|---|
| (继承自 ObjectSet) 通过特定条件获取对象的子集。 条件由 返回一个 ObjectSet 类型的实例。 |
| (继承自 ObjectSet) 返回一个 TypeMemoryInfo 类型的对象集合。 每个对象表示源对象集中某一特定类型,并携带该类型对象的数量及其总大小的信息。 |
| 获取当前内存检查点与通过 返回一个 SnapshotDifference 类型的实例,允许您获取有关新对象、死亡对象和存活对象的数据。 |
| 获取当前内存快照与通过 返回一个 Traffic 类型的实例,允许您获取在指定时间间隔内分配和回收的对象数据。 |