Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];




Вниз

Что в программе может жрать ресурсы? 


Aleksandr   (2002-03-20 12:18) [0]

Уважаемые коллеги!
Добавил я в программу истчо один поток, пользующийся TIdTCPClientом для отсылки обнаруживаемых файлов... И началась полная ерунда - ресурсы процессора программа поедает на 99% в течение часа, а из памяти сервера за ночь она съедает 30 метров... Я просто ошизеваю! Поток создается только один раз за всю историю программы. Уничтожается он при ее завершении... Отчего может происходить утечка?



Alx2   (2002-03-20 12:27) [1]

Код бы посмотреть... мало ли отчего



Aleksandr   (2002-03-20 12:52) [2]

У меня кода 310 тысяч строк... долго смотреться будет. Просто от чего поток может теоретически съедать память и (самое главное) процессор?



Alx2   (2002-03-20 12:59) [3]

Так нового ничего не скажу.

Память - от ее неосвобождения.
Про ресурсы процессора - не понял. Что это? Загрузка ЦП?

Если ресурсы GDI или user - то опять-таки, что-то забываем освобождать.

Но все это и так известно.



Aleksandr   (2002-03-20 13:00) [4]

Загрузка ЦП :(



Digitman   (2002-03-20 13:01) [5]

>>"Отчего может происходить утечка?"

Поток запрашивает выделение памяти из кучи, но не освобождает ее по завершению

>>"ресурсы процессора .."

1. Уменьшай отн.приоритет потока
2. В циклах ожидания неких событий (если таковые есть в теле потока) используй везде, где возможно, объекты синхронизации ОС



Виктор Щербаков   (2002-03-20 13:04) [6]

Если поток непрерывно работает (т.е. не находится в режиме ожидания) и не освобождает кванты выделенного процессорного времени (Sleep, SleepEx). То 100-процентная загрузка ЦПУ - это нормально.



Aleksandr   (2002-03-20 13:19) [7]

Так-так-так... У меня есть Sleep для потока... Объекты синхронизации ОС - это что? Просто в потоке и в самом деле тучу раз производится ожидание, malli, когда сокет ждет ответа от удаленной программы.



Виктор Щербаков   (2002-03-20 13:25) [8]


> Объекты синхронизации ОС - это что?

Это мьютексы, семафоры, таймеры и т.п.
Про синхронизацию с помощью объектов ядра можно у Рихтера почитать. Достаточно полно описано.



Nikolay M.   (2002-03-20 14:17) [9]

Такая загрузка ЦП бывает под НТ, потому что там по иному устроена многопоточность, в отличие от 95/98. Лечится установкой в TThread.Execute задержки Sleep (1).
Про утечку - присоединяюсь - надо смотреть, где выделяется память и во всех ли случаях она правильно освобождается.



Aleksandr   (2002-03-20 14:34) [10]

2 Nikolay M.

Что-то похожее я где-то встречал... Ставить этот Sleep до начала цикла в Execute?

begin
Sleep(1);
Repeat
DoSome
until Terminated
end; ?



Виктор Щербаков   (2002-03-20 14:36) [11]

Не до начала, а именно в цикле.




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.037 c
3-36              TYuri                 2002-03-07 10:26  2002.04.01  
Help, помогите срочно нужна помощь!


4-358             Serg001               2002-02-01 16:35  2002.04.01  
Дайте, пожалуйста, кто нибудь ссылочку на описание создания клав. ловушек.


3-39              ЛенаК                 2002-03-06 09:36  2002.04.01  
deadlock violation при удалении записей


1-85              vladimir_12           2002-03-19 09:11  2002.04.01  
Печать в текстовом режиме


1-203             PEC                   2002-03-20 10:33  2002.04.01  
Помогите plz