0

我有一个应用程序,我怕有内存泄漏。使用 VMMAP 对其进行调查,我发现大部分分配都是保留内存。它不应该影响性能......?问题仍然是 - 保留这么多内存的原因可能是什么(我该如何调查它?)它会影响某个阶段的性能吗? 在此处输入图像描述

在此处输入图像描述

4

1 回答 1

1

此 Microsoft 文档页面可以解释保留内存的含义 - https://docs.microsoft.com/en-us/windows/win32/memory/page-state

您可以安全地保留大量内存,没有任何问题(在 x64 构建中,这看起来像您的情况)

我用下一个代码成功地保留了 30000 GB 的内存

#include "Windows.h"

int main()
{
    static const size_t allocationSize = 512 * 1024 * 1024;
    size_t allocated = 0;
    while (true)
    {
        void* data = ::VirtualAlloc(NULL, allocationSize, MEM_RESERVE, PAGE_READWRITE);
        if (data == nullptr)
        {
            HRESULT hr = GetLastError();
            ::DebugBreak();
        }
        allocated += allocationSize;
    }
}
于 2020-11-15T23:04:47.433 回答