Экономим память на примере создания форм

2 минуты на чтение

Давайте поговорим в этой статье о том, сколько памяти занимает наша программа, приложение, написанное на Delphi. Да можно сказать не много, а если Ваша программа, очень часто делает запросы куда-то, в фоновом режиме что-то выполняет, то тут начинаются уже проблемы, с которыми многие также сталкивались уже. Так вот, для начала можно также уменьшить объем занимаемой памяти Вашей программы, написанной на Delphi, хоть не на много, но все же, а если и дальше оптимизировать, то довольно приличный объем памяти мы сэкономим, и увеличим работу нашего приложения. Давайте предположим, что в Вашем приложении на Delphi около 5 форм. Так вот думаю многие знают, что Delphi их создает все 5 форм сразу, после запуска Вашего приложения, в независимости от того, вызвали Вы форму или нет, они создались и «висят» в памяти, так сказать ждут пока Вы вызовите их с помощью процедур Show или ShowModal. Вот и где Ваша память деётся, хоть и не много, но всеже, а Вы подумайте, если в Вашем приложении не 5 форм, а 25, да и еще забыли уничтожить какой-нибудь поток, переменную и так далее, то тут возникают гораздо больше неприятностей. Давайте решим эту проблему раз и навсегда. А будем мы ее решать очень просто, создавать формы тогда когда нам нужно их вызвать, а при закрытии просто-напросто удалять их из памяти компьютера. Давайте в нашем проекте Delphi нажмем на клавишу F7 и посмотрим

как видите сначала инициализируется наше приложение, а затем создаются все наши формы (все формы нашего приложения). Давайте оставим только создание нашей главной формы, а остальные формы (их создание) просто закомментируем.

А по мере необходимости вызова формы, мы ее будем сразу же и создавать, а по закрытию уничтожать, чтобы не «висела» в памяти компьютера. Например давайте вызовем форму 2, на кнопку события onClick напишем

procedure TForm1.Button1Click(Sender: TObject);
begin
Application.CreateForm(TForm2,Form2);
Form2.Show;
end;

А на событие формы — Form2 - OnClose

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form2.Free;
Form2:=nil;
end;
То есть мы уничтожаем из памяти нашу форму, так как она нам совсем не нужна, а затем вызываем по мере необходимости, все очень просто. Думаю Вы теперь будете экономить оперативную память.
Facebook Vk Ok Twitter LinkedIn Telegram

Похожие записи:

Ну вот не долго думая, подошла вторая часть по работе с ADO в DELPHI на примере БД — MS Excel. В данной статье мы рассмотрим добавление и редактирование данных, так как с удалением тут возникли проблемы, в связи с тем, что данный драйвер не поддерживает удален...
На днях, в свой проект MapWindows GIS в Delphi я добавил сетевую поддержку. То есть создал отдельный сервер и отдельный клиент. Смысл заключается в том, что работает сервер приложения, пользователь запускается клиент и в пользователь вводит запрос: Москва Твер...
Здравствуйте, в этой статье я расскажу Вам, как использовать в своем приложении (программе) на Delphi БД в виде MS Excel. Да да именно MS Excel. Тут ничего сложного нету. Для начала давайте заполним наш лист в MS Excel. Первая строка в каждом столбце всегда бу...