Маленький трюк, который пригодится Вам для создания приложений, работающих в фоновом режиме. Таких, как планировщик задач, служб, серверов и т.п. То есть приложений, которые постоянно сидят себе тихонько в памяти, и чего-то там в фоне делают, не мешая пользователю заниматься своими делами.
Для таких приложений важным фактором является размер потребляемой памяти.
Фоновые приложения должны кушать минимум оперативной памяти и не нагружать процессор.
В принципе, данный приём можно применять в любых приложениях. Просто для активных интерфейсных приложений в этом нет смысла.
Но меньше слов, больше кода:
После вызова этой процедуры, приложение отпустит всю ненужную ему память.
Можете попробовать создать пустую форму с кнопкой и посмотреть, как изменится объём занимаемой памяти.
P.S. Сработает только на WinNT системах.
Копирайты:
Code courtesy of Roy Nelson (
Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
), Inprise European Professional Support
From Delphi Magazine article "Slimming the fat off your Apps" by Hallvard Vassbotn,
Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
Можно и короче, но так читабельнее.
Да и отпускать хэндл - дело культурное. Хоть и не обязательно в данном случае, но хорогий тон.
Что касается подхода - да именно так.
Только в данном случае нам не нужно сворачивать и разворачивать. Да и без "хитростей" это не всегда пройдёт гладко.
А без окон вообще - только так.
Фоновые приложения должны кушать минимум оперативной памяти и не нагружать процессор.
Правильно сказано, но к приведенному примеру не имеет никакого отношения. Если программа имеет утечки памяти - ей уже ничто не поможет. А по данному примеру: скинул данные в своп - и радуешся? Гы...
На самом деле освобождается физическая память.
Всё ненужное просто сбрасывается в свап на жёстком диске.
Разумеется ничто и никуда не девается.
Реально программа продолжает использовать всю затребованную память по прежнему. Но физическая память действительно освобождается и становится доступной для более полезных целей.
Зачем занимать её ненужным мусором? Пусть он валяется в свопе. В 99% случаев он просто не потребуется. Если и потребуется, винда сама достанет необходимое обратно.