Форум: "Основная";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
ВнизНепонятная утечка памяти Найти похожие ветки
← →
Aleksandr. (2004-08-17 13:34) [0]Смотрел за памятью программы через диспетчер задач, и заметил оригинальное поведение - по ходу работы память растет-растет... Потом делаешь простейшую операцию - сворачиваешь окно программы в tray и опять разворачиваешь - и память, занимаемая ею, опять возвращается в изначальный размер. Существует реальная проблема - за несколько часов работы программа "выедает" все ресурсы компьютера (а освобождает их сворачиванием/разворачиванием, но не будешь же сидеть сутками и тыркать по трею). Что может вызывать такие "спецэффекты"?
← →
VMcL © (2004-08-17 13:38) [1]>>Что может вызывать такие "спецэффекты"?
Обычно, ошибка в программе.
← →
WondeRu © (2004-08-17 13:43) [2]Aleksandr. (17.08.04 13:34)
проблемы с резервированием страниц памяти! С памятью как работаешь?
← →
Aleksandr. (2004-08-17 13:57) [3]Ох, память юзается по-всякому. Прога вообще юзает почти все, что есть в программировании - и протоколы, и многопоточности, и базы данных разных драйверов. Это типа наш сервер, поэтому такой навороченный. Недавно я его перекомпилял под Д7 (из Д6), и поехала такая пестня. Только в теории я слаб, поэтому нельзя ли объяснить, что вы имеете в виду под "резервированием страниц"?
← →
WondeRu © (2004-08-17 14:03) [4]Aleksandr. (17.08.04 13:57) [3]
у Подгорецкого на сайте есть Memory SDK на русском! Советую глянуть! www.podgoretsky.com
← →
Aleksandr. (2004-08-17 14:07) [5]Хорошо. Кстати, истчо вопрос - ограничено ли как-то количество Event"ов, которые может юзать программа? У меня с десяток загруженных под полную WaitForMultipleObject, один семафор, ну и по ходу работы бывает под пару сотен одиночных Event"ов для WaitForSingleObject...
← →
WondeRu © (2004-08-17 14:21) [6]Aleksandr. (17.08.04 14:07) [5]
это без проблем! должно работать нормально!
← →
Erik1 (2004-08-17 14:24) [7]Думаю, что с программой все в порядке, иначе никаким бы сворачиванием неполучилось вернуть память системе. Обычное незервирование страниц, только непонятно почему из освобожденых страниц неберется память. Возможно виновата фрагментация, это легко проверить MemoryChecker. Или вызовом функций диспечера памяти Borland.
А зачем переходить на Delphi 7? Я вот тоже нездоровый интерес проявлял по переходу на D6 или D7 с Delphi 5. Попробовал получил в потоках ошибки, посмотрел системные библиотеки и понял, что мне это никогда непонадобится! Спокой сижу на пятерке, чего и вам советую.
← →
Aleksandr. (2004-08-17 14:54) [8]Erik1:
А можно подробнее про фрагментацию? Объясните, пожалуйста, что мне конкретно нужно сделать, чтобы хотя бы проверить Вашу версию? Кстати, обратил внимание еще на следующее: перевожу программу в холостой режим (то есть она ничем не занимается, просто просматривает папки и слушает порты), память при разворачивании из tray сначала вырастает на метр, потом успокаивается. В визуальном окне программы находится TStringGrid из двух колонок - для ведения лога. Так вот при скроллинге по этой гриде память все время растет и не падает до очередного сворачивания/разворачивания. Соответственно, как я подозреваю, в рабочем режиме прирост памяти вызывается в той же опере. Это вообще нормально для StringGrid - такое поведение?
← →
Aleksandr. (2004-08-17 14:57) [9]А по поводу перехода на Д7 - пришлось из-за МИДАСа. В Д7 там несколько больше и лучше возможности.
← →
Erik1 (2004-08-19 10:13) [10]Советую воспользоватся поисковиком и посмотреть различные MemCheck. А также почитать статьеи о диспечерах памяти.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c