HomeBlogMagic

Speicherverbrauch von Anwendungen in Windows begrenzen

Wer in Applikationen mit Filemappings oder Ähnlichem arbeitet, kennt das Problem vielleicht: Wenn eine Datei so gemappt wird und per Pointer darauf zugegriffen wird, speichert Windows den Inhalt im Arbeitsspeicher zwischen um die Performance zu erhöhen. Ist die Datei allerdings größer als der Arbeitsspeicher, läuft dieser schnell voll.

Deshalb kann man mit folgendem Code den Verbrauch unter Windows limitieren.

HANDLE hProcess = GetCurrentProcess();
if (SetProcessWorkingSetSizeEx(hProcess, 50, static_cast<size_t>(4)*1024*1024*1024, QUOTA_LIMITS_HARDWS_MIN_DISABLE | QUOTA_LIMITS_HARDWS_MAX_ENABLE))
{
  printf("Limits are set\n");
}

Der Verbrauch des laufenden Prozesses ist damit auf ca 4GB begrenzt.

Permalink: https://adirmeier.de/Blog/ID_372
Tags: Blog, C/C++, Windowsvon am 2021-05-05