Подсмотрел тут у Snowy интересный прием, для освобождения памяти, не нужной, в данный момент, программе. Как известно, Delphi использует свой менеджер памяти, который "отъедает" у системы память блоками и не освобождает их долгое время, предполагая, что она еще понадобится для программы. Однако, очень часто бывает, что данный объем формируется при инициализации программы и не нужен дальше. Еще чаще бывает так, что программа сама должна занимать минимум места (сервисы, планировщики, фоновые программы и т.д). Вот для таких случаев и понадобится подобный код.
uses Windows, SysUtils;
procedure TrimWorkingSet;
var
MainHandle: THandle;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
MainHandle := OpenProcess(PROCESS_ALL_ACCESS, false, GetCurrentProcessID);
SetProcessWorkingSetSize(MainHandle, DWORD(-1), DWORD(-1));
CloseHandle(MainHandle);
end;
end;
Это все. Никакого волшебства
. Хотите проверить? Пожалуйста. Проверьте, сколько занимает программа до нажатия на кнопку и сколько после. Приятно удивитесь
.
П.С. смотрите самые новые фильмы онлайн на лучшем сайте кинофильмов в Рунете - kinokadrik.ru. Только на нашем ресурсе ежедневные оновления и качественный просмотр вам гарантируются абсолютно бесплатно!
| Далее »
+1