Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Вниз

Thread creation error - Недостаточно памяти   Найти похожие ветки 

 
RealSwift   (2008-07-06 12:19) [0]

Доброе время суток.

Есть программа для многопоточного одновременного пинга компьютеров локальной сети. Запускается одновременно ~2000 потоков. Соответственно возвращается информация о наличии или отсутствии компьютера. Время отработки программы - 20 секунд. Все хорошо, однако после третьего цикла (т.е. три цикла программа отработала хорошо) - вылетает сообщение "Thread creation error - Недостаточно памяти". При этом слежу в диспетчере задач - память после отработки цикла освобождается, потоки исчезают.

FreeOnTerminate := true;

Как решить вопрос? Почему возникает?
Спасибо!


 
Поросенок Винни-Пух ©   (2008-07-06 12:44) [1]

Как решить вопрос? Почему возникает?

Потому что утечки памяти есть


 
RealSwift   (2008-07-06 13:09) [2]

>>Винни-Пух

А как решить?


 
Тын-Дын ©   (2008-07-06 13:29) [3]


> Поросенок Винни-Пух ©   (06.07.08 12:44) [1]
>
> Как решить вопрос? Почему возникает?
>
> Потому что утечки памяти


Утечки памяти ни при чем.

2000.потоков*1Мб.стека=2Гб.памяти.
Вот и вся проблема.


> RealSwift   (06.07.08 13:09) [2]
>
> >>Винни-Пух
>
> А как решить?


Ограничиться разумным количеством потоков.


 
Тын-Дын ©   (2008-07-06 13:31) [4]

Либо сделать потоки повторно используемыми в контексте задачи, либо контролировать их количество.
Мне представляется разумным ограничение в 50-100 потоков.


 
Поросенок Винни-Пух ©   (2008-07-06 13:40) [5]

Утечки памяти ни при чем.

Будь то правда, косяк вылез бы на первой итерации цикла, а не на третьей.


 
Поросенок Винни-Пух ©   (2008-07-06 13:42) [6]

Утечки памяти ни при чем.

2000.потоков*1Мб.стека=2Гб.памяти.
Вот и вся проблема.


Где ты высосал цифру две тысячи?
Запускается одновременно ~2000 потоков


 
Тын-Дын ©   (2008-07-06 13:43) [7]


> Где ты высосал цифру две тысячи?


Головой подумай.

PS.
Я знаю, что земля не круглая...


 
Тын-Дын ©   (2008-07-06 13:45) [8]

Кстати, попробуй, если интересно, создать ~2000 потоков.


 
Поросенок Винни-Пух ©   (2008-07-06 13:46) [9]

Головой подумай.

Утечки памяти ни при чем.


Сам подумай головой.
Будь то правда, косяк вылез бы на первой итерации цикла, а не на третьей.


 
Тын-Дын ©   (2008-07-06 13:48) [10]


> Поросенок Винни-Пух ©   (06.07.08 13:46) [9]
>
> Головой подумай.
>
> Утечки памяти ни при чем.
>
> Сам подумай головой.
> Будь то правда, косяк вылез бы на первой итерации цикла,
>  а не на третьей.


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


 
Тын-Дын ©   (2008-07-06 13:49) [11]

Кстати, это не исключает утечку памяти.
Но
> При этом слежу в диспетчере задач - память после отработки
> цикла освобождается, потоки исчезают.


 
Игорь Шевченко ©   (2008-07-06 14:34) [12]

Врет автор насчет локальной сети. Он спамер


 
Тын-Дын ©   (2008-07-06 14:40) [13]


> Игорь Шевченко ©   (06.07.08 14:34) [12]
>
> Врет автор насчет локальной сети. Он спамер


Совершенно не факт.
У меня тоже есть подобная задачка, только руки не доходят пока.



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

Форум: "Начинающим";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
15-1213968206
Small Donkey
2008-06-20 17:23
2008.08.03
Размещение ваших программ


15-1213615001
wild
2008-06-16 15:16
2008.08.03
TDirectoryListBox


2-1215040775
Si13
2008-07-03 03:19
2008.08.03
VSL Form, проблемы с открытием


15-1213964364
AEN
2008-06-20 16:19
2008.08.03
Автошколы в Москве


4-1193654690
Dmitry_177
2007-10-29 13:44
2008.08.03
почему не срабатывает таймер?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский