Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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]

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



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

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

Наверх





Память: 0.46 MB
Время: 0.006 c
4-361
Serg001
2002-01-30 10:24
2002.04.01
Как узнать классы всех окон, но только родительских


1-116
Sergy
2002-03-21 16:36
2002.04.01
Длина переменной типа string


1-171
Beginer
2002-03-19 11:28
2002.04.01
Новое свойство формы


3-64
Cyberbob
2002-03-09 20:48
2002.04.01
Как свою БД сделать-например


6-265
Malder
2002-01-19 13:39
2002.04.01
Перехват Socket соединения





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