Хотите прямо сейчас получить бесплатный видеокурс по программированию для начинающих?

Как освободить память на Delphi

Июнь 23, 2013

CleanMem-300x225Недавно писал один парсер и он работал в фоновом режиме и собирал картинки с сайтов, работал он в фоне и должен был потреблять как можно меньше памяти. Но прога получилась на редкость вредная и наоборот прямо-таки зажралась моей памятью! Потому чтобы ее усмирить пришлось воспользоваться вот такой нехитрой процедуркой:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
uses Windows, SysUtils;
 
procedure clearmem;
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;

Просто вызывайте ее периодически в вашей фоновой программе и программа освободит ненужную ей память



4 Комментариев к записи Как освободить память на Delphi

  1. Alex on 03.07.2013 at 14:43

    Если прога жрет память надо искать косяки в коде, а не городить костыли…..
    ИМХО.

    • Артём Кашеваров on 04.07.2013 at 00:48

      Согласен, но по моим наблюдениям сегодня в двух из трех программ наблюдаются хоть маленькие но утечки памяти. Я не могу точно сказать с чем это связанно. но даже самые банальные оконные программы состоящие из кнопки и компонента memo могут потихоньку жрать память. Возможно это из-за неверно используемых деректив IDE но точно не скажу…

      • Alex on 04.07.2013 at 13:42

        Если дело дошло до «зажралась» это уже не маленькие. В любом случае есть средства для отлова утечек.

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

      • Alex on 04.07.2013 at 13:50

        Забыл сказать, опять же если не изменяет память, используемая здесь функция WinAPI предполагает наличие у пользователя определенных прав. У пользователей Windows конечно модно работать всегда с правами Админа. Но это не правильно. И в конторе с грамотным администратором ваша прога может не заработать. Это надо понимать.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Поддержите проект

Хит продаж:

Случайный анекдот

Моя вторая книга

Что это???

Программирование для Android:

Мы вконтакте

Помощь сайту

Понравился сайт? Он сильно нуждается в раскрутке.

Чтобы помочь в раскрутке - опубликуйте ссылку на сайт (или любую его страницу) на любом другом сайте в интернете. Тогда сайт станет чуточку популярнее.

Или просто нажмите на кнопки социальных сетей которые стоят в конце каждой статьи

Вместе мы сможем сделать программирование более популярным и более понятным для всех!

Заранее спасибо!
Артём Кашеваров.