使用 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));
    }