- Регистрация
- 9 Май 2015
- Сообщения
- 1,227
- Баллы
- 155
Функцию которая позволяет приложению быстро и качественно очистить оперативную память занимаемую им, тем самым разгрузив систему. Но как я понял по вопросам приходящим на email, не все до конца понимают как можно это использовать при разработке своей программы, а тем более как выполнять данную операцию автоматически, то есть, не напрягая пользователя назойливыми сообщениями типа «Out of memory» и тому подобным.
Для опытных это проще простого, но для только начинающих познавать Delphi данная статья будет полезна, так как проблема утечки оперативной памяти возникает практически у всех новичков, у опытных тоже возникает, но они хотя бы в курсе как решить данную проблему в автоматическом режиме, а не просто создав событие на кнопке, и подписав «очистить оперативку». Возможно всё будет банально, но попробую обьяснить для всех. Хотя требуется провести всего несколько простых действий, вопросов почему то возникает не мало. Так что читаем далее icon smile Автоматическая очистка оперативной памяти в Delphi .
Начнём. Для очистки оперативной памяти занимаемой той или иной разрабатываемой вами программой потребуется выполнить несколько простых действий. Если делать строго по инструкции всё должно сработать с первого раза без каких либо проблем.
Открываем код программы и в самом верху в под type объявляем новую процедуру.
Опускаемся ниже и вставляем в тело программы код самой процедуры.
Переходим на вкладку «System», выбираем компонент под названием Timer и перетаскиваем его на свою форму.
Выставляем требуемые настройки для компонента, а именно частота обновления, т.е. частота очистки памяти (interval), по стандарту стоит 1 секунда (1000 миллисекунд).
Кликаем два раза по значку таймера (помещённого нами на форму), появится окно с кодом.
В тело процедуры (между begin и end) вставляем незамысловатую строчку:
Вот и всё, теперь ваша программа автоматически будет очищать оперативную память с заданным интервалом. Можно конечно вызывать данную поцедуру и после выполнения каких либо сложных действий, тут уже вам поможет лишь ваша фантазия.
Для опытных это проще простого, но для только начинающих познавать Delphi данная статья будет полезна, так как проблема утечки оперативной памяти возникает практически у всех новичков, у опытных тоже возникает, но они хотя бы в курсе как решить данную проблему в автоматическом режиме, а не просто создав событие на кнопке, и подписав «очистить оперативку». Возможно всё будет банально, но попробую обьяснить для всех. Хотя требуется провести всего несколько простых действий, вопросов почему то возникает не мало. Так что читаем далее icon smile Автоматическая очистка оперативной памяти в Delphi .
Начнём. Для очистки оперативной памяти занимаемой той или иной разрабатываемой вами программой потребуется выполнить несколько простых действий. Если делать строго по инструкции всё должно сработать с первого раза без каких либо проблем.
Открываем код программы и в самом верху в под type объявляем новую процедуру.
Код:
procedure RamClean;
Код:
procedure TForm1.RamClean;
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;
Выставляем требуемые настройки для компонента, а именно частота обновления, т.е. частота очистки памяти (interval), по стандарту стоит 1 секунда (1000 миллисекунд).
Кликаем два раза по значку таймера (помещённого нами на форму), появится окно с кодом.
В тело процедуры (между begin и end) вставляем незамысловатую строчку:
Код:
RamClean;