Использование оперативной памяти, измеренное с помощью GetProcessMemoryInfo, ниже, чем с помощью диспетчера задач

Я нашел много дискуссий в Интернете о том, почему использование оперативной памяти процесса, измеряемое диспетчером задач, часто выше, чем измеряется во время выполнения собственным кодом приложения. Для превосходного ответа об этом, см .: выделение оперативной памяти показывает двойное использование оперативной памяти в диспетчере задач

Однако, как ни странно, я нахожу обратное. Мое измерение внутри приложения, используя GetProcessMemoryInfo функция, показывает более высокий объем использования оперативной памяти, чем диспетчер задач. Код просто:

#include <iostream>
#include <Windows.h>
#include <psapi.h>int main(void)
{
uint64_t currentUsedRAM(0);

PROCESS_MEMORY_COUNTERS info;
GetProcessMemoryInfo(GetCurrentProcess(), &info, sizeof(info));
currentUsedRAM = info.WorkingSetSize;

const int N(100000000);
int *x = new int[N];
for (int i = 0; i < N; i++)
{
x[i] = 1;
}

GetProcessMemoryInfo(GetCurrentProcess(), &info, sizeof(info));
currentUsedRAM = info.WorkingSetSize - currentUsedRAM;

std::cout << "Current RAM used: " << currentUsedRAM << "\n";

return 0;
}

Вывод «Текущая используемая оперативная память: 400007168», измеряется в байтах (например, около 400 Мб). Тем не менее, в моем диспетчере задач процесс приложения показан как использующий только 381,8 МБ, что примерно на 18 МБ меньше.

Почему это случилось?

Есть ли способ заставить их сходиться к одному и тому же результату?

РЕДАКТИРОВАТЬ:

После ссылки, предложенной в комментариях, я также попробовал Process Explorer программное обеспечение в замене диспетчера задач. При этом измерение составляет 391 892 Мб. Это ближе к тому, что я получаю из измерений в приложении, но все еще довольно плохо.

Еще важнее то, что я попытался увеличить размер массива на один порядок. Интересно, что измерение внутри приложения, измерение диспетчера задач и измерение Process Explorer также увеличиваются на один порядок. Разница между измерениями внутри приложения и этими программами также пропорционально увеличивается и составляет от 18,8 МБ (Диспетчер задач) или 9 МБ (Process Explorer) до 185 МБ (Диспетчер задач) или 102 МБ (Процесс). Explorer).

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]