Можно ли ограничить процесс тем, сколько физической памяти он использует? - PullRequest
0 голосов
/ 09 мая 2018

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

Я знаю, что это возможно для программы Java, добавив параметр Maximum heap size во время запуска программы Java (например, java.exe ... -Xmx4g), но здесь я имею дело с исполняемым файлом в системе Windows-10, поэтому это не применимо.

Название этого поста относится к этому URL , в котором упоминается способ сделать это, но также говорится:

Максимальный рабочий набор. Указывает максимальный объем рабочего набора, назначенного процессу. Тем не менее, это число игнорируется Windows , если приложение управления ресурсами не настроило жесткий процесс для этого процесса.

Между тем я могу подтвердить, что следующие строки кода действительно не влияют на использование памяти моей программой:

HANDLE h_jobObject = CreateJobObject(NULL, L"Jobobject");
if (!AssignProcessToJobObject(h_jobObject, OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId())))
{
    throw "COULD NOT ASSIGN SELF TO JOB OBJECT!:";
}
JOBOBJECT_EXTENDED_LIMIT_INFORMATION tagJobBase = { 0 };
tagJobBase.BasicLimitInformation.MaximumWorkingSetSize = 1; // far too small, just to see what happens

BOOL bSuc = SetInformationJobObject(h_jobObject, JobObjectExtendedLimitInformation, (LPVOID)&tagJobBase, sizeof(tagJobBase));

=> bSuc - это true или есть что-то еще, чего мне следует ожидать?

Кроме того, упомянутые инструменты (приложения, управляемые ресурсами, такие как Hyper-V), похоже, не работают в моей системе Windows-10.

Рядом с этим, похоже, есть еще один пост на эту тему "Есть ли способ заставить рабочий набор процесса быть 1 ГБ в C ++?" , но здесь результаты кажутся отрицательными тоже.

Для хорошего понимания: я работаю в C ++, поэтому решение, предложенное в , этот URL не применимо.

Так что теперь я застрял с простым вопросом: существует ли способ, реализуемый в C ++, ограничить использование памяти текущим процессом, работающим в Windows-10?

У кого-нибудь есть идея?
Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...