Учимся освобождать занимаемую программой память на Delphi

Опубиковано: 08.05.2008 г., автор: , просмотров: 50775

Пример, который я сейчас хочу вам показать, применим только для программ работающих в фоновом режиме (для других в этом просто нет смысла). Т.е программ, которые постоянно сидят в памяти и не мозоля глаза пользователю занимаются своими делами. Данный delphi исходник подойдет при создания троянов, вирусов, планировщика задач и.т.д. Для таких приложений крайне важным является объем потребляемой памяти, и разработчик должен свести его к минимуму.
Переходим к коду:

Создаем простенькую процедуру после вызова которой наша 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;

Пользуйтесь на здоровье !

Code courtesy of Roy Nelson ( rnelson@inprise.com), Inprise European Professional Support
From Delphi Magazine article "Slimming the fat off your Apps" by Hallvard Vassbotn, hallvard@falcon.no



Похожие материалы

Последние из рубрики

Александр 10 May 2013 в 00:00 #
Хороший Сайт по теме делфи спасибо вам...
Евгений 04 Mar 2013 в 00:00 #
if Win32Platform = VER_PLATFORM_WIN32_NT then SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);

Тоже самое)
Олег 18 Nov 2012 в 00:00 #
сбрасывает значение рабочего набора памяти, но по факту не осбобождает память
zardoz 27 Oct 2012 в 00:00 #
Спасибо помогло от утечек в ImageEn (ну не рыться же самому в тоннах чужого кода). А по факту: если вам понадобилась эта процедура в своем коде, то вы где-то напортачили и не освобождаете память.
zardoz 27 Oct 2012 в 00:00 #
А в цикле не помогает. Функция реально не освобождает память, а скидывает рабочий набор памяти приложения из оперативки в файл подкачки и как только достигается его лимит для приложения - Out of Memory. Чудес не бывает, сборщик мусора это не заменит. Выходит функция полезна разве что для скрытия реально используемой приложением памяти.

ОтменитьДобавить комментарий