Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Утечки памяти при числе потоков больше max! 
:(
    Опции темы
DmitryHT
Дата 3.11.2007, 02:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 31.8.2007

Репутация: нет
Всего: нет



Код

      pause:= True;
      Repeat
        if (s_threads < SpinEdit_threads_check.Value) then
        Begin
          //утечки при обработке этого Try Except ... End кода !!!
          Try
            potok:= tPotok.Create(True); 
          Except
            Sleep(50);
            continue;
          End;
          Try
            potok.FreeOnTerminate:= True;
            potok.OnTerminate:= DecThread;
           ...
           ...
          Except
          End;
       End;
     Until pause=False;


Имеется след. код запуска потоков, а также юнит MemCheck для определения утечек памяти в программе.
Как видно из кода, если новый поток создать невозможно, то пауза и затем повторная попытка, и так до тех пор, пока программа не создаст поток.

Заметил след. особенность: что при ошибке в участке кода, выделенного комментарием, происходит утечка памяти.
т.е. чем больше таких ошибок за программу, тем больше утечки!
Например, при 800 потоках оч. малое число ошибок  и утечки составляют 5000 байт, а при 900 уже около - 180000 за один цикл

Вопрос: как от них избавиться? Возможно нужно "затирать" что-то в случае ошибки smile
В каком объекте наблюдаются утечки: в potok, либо в exception? 
PM MAIL   Вверх
dumb
Дата 3.11.2007, 06:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 5
Всего: 158



Код

Try
  potok:= tPotok.Create(True); 
Except
  FreeAndNil(potok);

а вообще, если твоей целью не является вывод ОС из равновесия, то не стоит плодить такое количество потоков...
PM MAIL   Вверх
DmitryHT
Дата 3.11.2007, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 31.8.2007

Репутация: нет
Всего: нет



Код

FreeAndNil(potok);


пробовал! Не только не помогает, но и при обработке выдает ошибку Thread Error. The handle is invalid (6).

Это сообщение отредактировал(а) DmitryHT - 3.11.2007, 12:47
PM MAIL   Вверх
DmitryHT
Дата 4.11.2007, 03:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 31.8.2007

Репутация: нет
Всего: нет



Цитата

а вообще, если твоей целью не является вывод ОС из равновесия, то не стоит плодить такое количество потоков...


можно ли обосновать эту фразу?  smile 
PM MAIL   Вверх
MetalFan
Дата 4.11.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



DmitryHT, а я тебе говорил... и не раз еще знающие люди скажут ;)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
DmitryHT
Дата 5.11.2007, 03:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 31.8.2007

Репутация: нет
Всего: нет



да уж прав ты был на все 100%  smile 

вот 3 ночи на часах... а я как раз закончил вариант со статическими потоками
Сейчас поставлю на тест, потом посмотрю что и как  smile 
PM MAIL   Вверх
MetalFan
Дата 5.11.2007, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



Цитата(DmitryHT @  5.11.2007,  03:49 Найти цитируемый пост)
вариант со статическими потоками

как это?! статические потоки?  smile  smile 


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.2446 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.