使用 dotMemoryUnit 监控峰值内存使用情况
Monitor peak memory usage with dotMemoryUnit
是否可以使用 JetBrains 的 dotMemoryUnit
获得峰值内存使用量?
我知道可以看到内存流量:分配和收集。但是,如果我想在测试期间看到峰值内存使用量从未超过一定数量怎么办?
例如如果我的应用程序分配 100mb,收集它,然后再分配 100mb,然后是一个集合,那很好。但是如果它一次分配200mb,我想抓住它。
看起来我试图解决的问题在没有 dotMemoryUnit 的情况下很容易解决。
使用 PeakWorkingSet64 对我有用。
使用 NUnit
的测试可能如下所示:
[Test]
public void Should_not_peak_more_than_200_mb()
{
var memoryCap = 200 * 1024 * 1024;
var sut = new SystemUnderTest();
sut.DoMemoryHeavyOperation()
var peakWorkingSet = Process.GetCurrentProcess().PeakWorkingSet64;
Assert.That(peakWorkingSet, Is.LessThan(memoryCap));
}
是否可以使用 JetBrains 的 dotMemoryUnit
获得峰值内存使用量?
我知道可以看到内存流量:分配和收集。但是,如果我想在测试期间看到峰值内存使用量从未超过一定数量怎么办?
例如如果我的应用程序分配 100mb,收集它,然后再分配 100mb,然后是一个集合,那很好。但是如果它一次分配200mb,我想抓住它。
看起来我试图解决的问题在没有 dotMemoryUnit 的情况下很容易解决。
使用 PeakWorkingSet64 对我有用。
使用 NUnit
的测试可能如下所示:
[Test]
public void Should_not_peak_more_than_200_mb()
{
var memoryCap = 200 * 1024 * 1024;
var sut = new SystemUnderTest();
sut.DoMemoryHeavyOperation()
var peakWorkingSet = Process.GetCurrentProcess().PeakWorkingSet64;
Assert.That(peakWorkingSet, Is.LessThan(memoryCap));
}