Форум: "Основная";
Текущий архив: 2002.11.11;
Скачать: [xml.tar.bz2];
Внизвысвобождение памяти Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c