Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
14-34245
kull
2002-10-22 14:53
2002.11.11
SQL Precompiler...


14-34216
Asteroid
2002-10-22 13:04
2002.11.11
О жизни и развитии


14-34246
Novichek
2002-10-23 01:07
2002.11.11
Кто знает как образ СД-Диска перевести в нормальный файловый тип?


1-34028
race1
2002-11-02 17:33
2002.11.11
снова массивы


4-34294
Vovik
2002-10-01 16:40
2002.11.11
Как предотвратить закрытие приложения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский