![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Количество потоков всё время растёт?!
Ksenom © (2006-02-09 10:57:00)По работе столкнулся с такой проблемой.
В процессе работы я по таймеру создаю и вызываю поток:
procedure TForm1.StartMaket;
var Maket:TMaket;
begin
Maket:=TMaket.Create(true);
Maket.FreeOnTerminate:=true;
Maket.Resume;
end;
Сам поток в процессе инициализации запускает функцию:
procedure TMaket.Execute;
begin
Processing;
end;
Функция, в общих чертах, через Mapi смотрит почту, пишет в базу, отпровляет письма и всё такое. Факт что процедура без проблем и ошибок выполняется до конца. Таким образом по идее после её выполнения поток должен уничтожиться и освободить занимаемую им память.
За сутки работы (каждые 10 минут старт потока) количество потоков с 3 увеличивается до 9 и продолжает медленно расти. При этом ошибок нет, так как я в сами потоки запихал много проверок на ошибки. Более того растёт объём занимаемой программой в системе памяти. С 3 Мб при старте за сутки вырастает до 25Мб.
Почему так и как с этим бороться?
Kolan (2006-02-09 11:17:00) [21]Таким образом по идее после её выполнения поток должен уничтожиться и освободить занимаемую им память.
А ты проверял. Он уничтожается?
Digitman (2006-02-09 11:09:00) [22]
> Факт что процедура без проблем и ошибок выполняется до конца
Не факт.
Каким образом ты этот факт получаешь ?