Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.11;
Скачать: CL | DM;

Вниз

высвобождение памяти   Найти похожие ветки 

 
kant   (2002-11-01 10:38) [0]

Приветствую Вас достопочтенные мастера Delphi. Помогите неопытному программисту. У меня проблема не высвобождения памяти. Значит программа DDE-клиент ведет опрос удаленных приборов с интервалом в 3 минуты. Весь обмен по DDE написан на API функциях(потому что Delphi компоненты почему-то не работают как надо). Для приема данных используется динамический массив 1200 элементов. Для работы с этим массивом использую New, Dispose. Так же имеется несколько переменных типа PChar для них использую StrNew и StrFree. Везде в потенциально опасных местах понатыкал try..except. Казалось бы все опасные места на предмет засорения памяти я учел. Причем память, занимаемая программой увеличивается не равномерно, а скажем в одном цикле опроса она может вырасти на 12 – 20 K, а в следующем на столько же или больше уменьшится или пару циклов вообще не меняться, но общая тенденция к росту сохраняется. Понимаю что вопрос немного не конкретный, но прошу дать хотя бы несколько общих советов, может быть ссылки на какие-нибудь статьи или если кто заинтересуется могу выслать код. Заранее благодарен.


 
Dr_Mike ©   (2002-11-01 10:44) [1]

По моему, явно где-то в коде ошибка, потому что объяснение на словах слишком общо и неконкретно.

А что может быть причиной ? Да много чего может быть :-)))

Если хочешь, можешь код прислать, но быстрый ответ не гарантирую - так как в своем коде трудно иногда баг отловить бывает, а уж что говорить про чужой. Но, может просто что-то сразу в глаза бросится...


 
han_malign ©   (2002-11-01 10:54) [2]

используй лучше открытые массивы и строки, Дельфя за ними хоть сам следит, и когда нужно удаляет
"Не плодите сущностей сверх нужного"©Имярек


 
Zemal ©   (2002-11-01 11:31) [3]

Ну что тут можно посоветовать... используй try...finalize и зачищай ресурсы в любом случае. Кстати, а чего ты ждал? Массив-то у тебя видимо значительный по размеру. И чего ты ждал? Ты память как смотришь? Виртуальную не учитываешь? Да и что тебя эти килобайты беспокоют? У меня тоже програмка написана... всего 438 кило весит, а в память экспонируется аж на 1700 кило :), а при работе возрастает до 2200, хоть я массивы и неиспользую :). К чему я виду? А вот к чему: виндовый менеджер памяти выделяет памяти приложению больше чем ему надо (с запасом) и постоянно этот запас держит... вот когда памяти начинает нехватать - виндовый менеджер начинает отбирать лишнюю память у прилаг... это я уже понял, т.к. сервис, который я написал стоит на сервере и при пиковой нагрузке занимает памяти 600-700 кило (с учётом файла подкачки)... вот такие вот дела... так что непереживай ты так :), уж такая политика у менеджера памяти винды :). Не принимай близко к сердцу :), я понимаю что жалко оперативку и сердце кровью обливается :), но прости ты его... он же не насовсем берёт память... он потом наместо положит :).



Страницы: 1 вся ветка

Текущий архив: 2002.11.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
7-34275
Holder
2002-07-18 15:10
2002.11.11
Можно ли заблокировать из Windows кнопку Reset ? (на корпусе)


14-34233
vopros
2002-10-23 14:07
2002.11.11
Таки сделал я то что хотел, про файлы.Поздравьте.


14-34184
kalishenko
2002-10-21 19:10
2002.11.11
Help me!


14-34203
vajo
2002-10-22 09:15
2002.11.11
Проблемы с Win XP


3-33888
Higs
2002-10-22 16:17
2002.11.11
Uniqueidetifier в MS SQL