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

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

    Пример, который я сейчас хочу вам показать, применим только для программ работающих в фоновом режиме (для других в этом просто нет смысла). Т.е программ, которые постоянно сидят в памяти и не мозоля глаза пользователю занимаются своими делами. Данный 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 ( [email protected]), Inprise European Professional Support
    From Delphi Magazine article "Slimming the fat off your Apps" by Hallvard Vassbotn, [email protected]



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

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

    Александр 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. Чудес не бывает, сборщик мусора это не заменит. Выходит функция полезна разве что для скрытия реально используемой приложением памяти.

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