|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.02.2014, 19:50 | #1 |
Форумчанин
Регистрация: 29.09.2009
Сообщений: 228
|
Многопоточное приложение
Здравствуйте, написал много поточное приложение на D7 с использованием Synapse. Работает приложение на WinServer 2008 в 400 потоков (на входе список сайтов из 17 лямов - распознавалка ЦМС). В течении 20 часов приложение занимает в памяти приблизительно 130 Мб и не растет больше (смотрю по диспетчеру задач). А вот когда я смотрю на всю занятую память в диспетчере задач то с момента стара программы свободная память уменьшилась на 5Гб. Иду дальше, стопаю потоки, закрываю прогу, окно закрылось но в процессах продолжает прога висеть. После нескольких минут освобождается 5Гб оперативы. Кто может прокоментировать эту ситуацию?
Можете посоветовать какую библиотеку лучше использовать для скачки html чтоб корректно ресурсы освобождала и не жрала их? p.s. Сначало делал прогу на Indy (10.2.3) но решил перейти на Synapse так как под индюками была сильно большая утечка памяти. |
08.02.2014, 19:53 | #2 |
Далеко не
Участник клуба
Регистрация: 11.08.2011
Сообщений: 1,512
|
Скорей всего дело в вас, вы уничтожаете объекты? freeandnil? freeonterminate?
|
08.02.2014, 20:28 | #3 |
Форумчанин
Регистрация: 29.09.2009
Сообщений: 228
|
Конечно, это я также тестил - отключил скроки кода с обращение в инет, и все гуд. А вот когда идет работа со скачкой страниц - ситуация мне не понравилась.
|
10.02.2014, 12:17 | #4 | |
Форумчанин
Регистрация: 12.02.2009
Сообщений: 215
|
Цитата:
насчет памяти, надо посмотреть на тему "утечек памяти", вообще, у меня, софт неделями пахал нормально, если корректно все использовать - то ничего "жрать" память не должно. если уж совсем в параноидальном режиме делать, можно попробовать так. 1. есть главный поток, типа менеджера, он распределяет работу между "качальщиками", и контролирует общее кол-во потоков. 2. каждый поток для скачивания УРЛ и проверки на ЦМС создается по принципу 1 поток - 1 УРЛ. примерно так, тогда, при корректном уничтожении "качальщиков" память расти не должна. По большому счету, все равно сколько потоков. Если с одним потоком память не "исчезает", то и с 400 потоками будет Ок.
Помог с вопросом - тыркаем в весы, Вам не сложно, а мне приятно
|
|
10.02.2014, 12:30 | #5 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Может вас это шокирует, но максимум потоков на 1 процесс - 60, при этом будет стабильно все работать.
Перепланируйте программу заново. Вон, полноценные игры с тысячами AI работают всего в 5-20 потоков. Цитата:
Последний раз редактировалось Человек_Борща; 10.02.2014 в 12:36. |
|
10.02.2014, 17:32 | #6 |
Форумчанин
Регистрация: 29.09.2009
Сообщений: 228
|
Спасибо всем ответившим. Проблема оказалась в переписанном мной методе уничтожения потока - забыл в конце деструктора Destroy написать inherited;
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Многопоточное приложение в Делфи | zokwild | Помощь студентам | 0 | 02.05.2012 21:55 |
многопоточное приложение | Vistar | Общие вопросы .NET | 1 | 26.08.2011 16:25 |
многопоточное приложение | favorite | Общие вопросы Delphi | 0 | 26.05.2011 19:47 |
Многопоточное приложение | MaXoN66613 | Помощь студентам | 0 | 07.06.2010 12:36 |
Многопоточное приложение на Indy 2 | Core2Duo | Работа с сетью в Delphi | 1 | 09.04.2009 11:42 |