Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.12;
Скачать: CL | DM;

Вниз

Минимизация = уменьшение размера проги в памяти?   Найти похожие ветки 

 
lexxx   (2004-08-25 11:12) [0]

Такая ситуация, у меня при своей работе программа открывает сотни потоков паралельной обработки информации, юзаю TThread. В главном окне проги показывается различная статистика по работе потоков, размер проги в памяти при открытом окне приложения растет до 90 мегов, как только минимизирую прогу в панель задач, то потоки работают дальше без каких либо проблем но размер проги в памяти становится 20 мегов, вопрос такой, а что собственно происходит в остальных 70 метрах памяти когда окно не свернуто? В главном окне проги расположены 10 эдитбоксов куда методами synchronize отображается статистика обработки инфы и всё, что является причиной такого разрастания?. Не пойму в чем дело.


 
KSergey ©   (2004-08-25 11:18) [1]

> программа открывает сотни потоков паралельной обработки
> информации

А вы уверены, что это гут?

А по основному вопросу - не берите в голову. Считайте, что так и надо.


 
lexxx   (2004-08-25 11:22) [2]

да как это, надо же разобраться, каким образом эта память высвобождается и что в ней хранилось кроме самого окна приложения


 
lexxx   (2004-08-25 11:33) [3]

Причем заметил если я минимизировал окно то память высвободилась до 20 метров и потом снова начала расти уже в минимизированном виде до своего наибольшего объема, тогда развернул окно снова и свернул, снова размер проги уменьшился до 20 метров. Я чего то не догоняю. Люди помогите пжалста


 
Digitman ©   (2004-08-25 11:33) [4]


> lexxx   (25.08.04 11:22) [2]


> надо же разобраться, каким образом эта память высвобождается
> и что в ней хранилось кроме самого окна приложения


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

имей ввиду, что при использовании TThread каждый созданный трэд "отнимает" в ВАП тек.процесса не меньше чем от MinStackSize до MaxStackSize байт вирт.памяти


 
KSergey ©   (2004-08-25 11:34) [5]

Считайте, что диспетчер программ показывает неверные результаты. Вернее, отражающие совсем не то, о чем вы подумали.

А вообще эти вопросы с памятью - просто надоели. Ищите на форуме верки с заголовками типа "почему прога жоет так много памяти" "куда девается память" "как уменьшить потребляемую память"

Характерно, что в каждом случае речь идет именно о просмотре через диспетчер программ.
Когда-то Игорь шевченко что-то вроде объяснял (год или два назад), но я не запомнил ничего кроме того, что это не должно волновать простых смертных. Что это совсем не то, что мы думали и ничего эти цифири реально не отражают.

Только и ему, понятно, на такие вопросы прискучило отвечать.

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


 
KSergey ©   (2004-08-25 11:35) [6]

> [5] KSergey ©   (25.08.04 11:34)
> Когда-то Игорь шевченко

Приношу извинения
Игорь Шевченко


 
lexxx   (2004-08-25 11:38) [7]

понял вас. да вы правы, я через диспетчер смотрю. Спасибо.
а трединг мне понадобился для обработки ну очень большого объема инфы. при 20 потоках скорость обработки намного медленней чем при пары сотни. озу 4 гига, четыре ксеона, думаю этого достаточно для такого числа потоков


 
KSergey ©   (2004-08-25 11:41) [8]

> при 20 потоках скорость обработки намного медленней чем
> при пары сотни

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


 
TUser ©   (2004-08-25 11:44) [9]

Такое кол-во потоков может понадобиться разве что на крутом сервере для обслуживания соотв. кол-ва клиентов.


 
Romkin ©   (2004-08-25 12:23) [10]

lexxx  (25.08.04 11:38) [7] Тогда уж лучше на процессы разбивать. Ты потоки к процессорам привязываешь?


 
Digitman ©   (2004-08-25 12:32) [11]


> трединг мне понадобился для обработки ну очень большого
> объема инфы


что есть у тебя "обработка" ?
кто и каким образом передает трэдам данные для обработки ?
хотя бы в 2-х словах поясни ...


 
lexxx   (2004-08-25 13:32) [12]

есть десяток тысяч файлов размером по 2-5 мег каждый, хранят логи важные, общий объем порядка 200 гигов, каждый день получаем новые файлы, т.е. новые 200 гг,
данные потокам передает главный поток проги создавая указанное кол-во потоков, после завершения обработки одного файла поток берет другой и тд пока все файлы не пройдут


 
lexxx   (2004-08-25 13:34) [13]

ребята я не так силен в дельфях как вы, поэтому то что умею пишу и вот такие вопросы возникают, согласитесь ну глупо ведь проге расти до 90 гигов если ей в минимизированном режиме хватает 20 для такой же успешной работы


 
lexxx   (2004-08-25 13:35) [14]

сорри опечатался, 90 мегов


 
Digitman ©   (2004-08-25 13:50) [15]


> lexxx


я так и не понял, ЗАЧЕМ тебе доп.трэды ?

сам осн.трэд примерно за такое же время справится с обработкой того же кол-ва файлов, разница лишь в том, что обрабатывать он их будет последовательно, один за другим ... а от того что каждый очередной файл будет обрабатываться доп.тредом,  суммарное время обработки всего списка файлов практически не изменится, просто обработка нескольких файлов одновременно будет выполняться "параллельно" ... и в то время как лоп.трэды обрабатывают каждый свой файл, совершенно непонятно, чем у тебя будет заниматься осн.тред, кроме обработки пользовательского ввода/вывода (читай - время от времени движком прогресс-бара елозить да позволять юзеру играться размерами и положением гл.формы приложения)


 
Digitman ©   (2004-08-25 13:57) [16]


> lexxx


я еще мог бы понять, если бы твое приложение требовало одновременный прием (скажем, по FTP) файла и немедленную же обработку только что принятых данных - здесь, скажем, тройка трэдов в твоем процессе еще как-то оправданы : один занят транспортом, другой - обработкой только что доставленной транспортом порции данных, третий - визуализацией хода работы транспортного и обрабатывающего трэдов ..

но у тебя же о транспорте речи не идет ! обработке у тебя подвергаются УЖЕ целиком доставленные (неважно как) данные !
так ну и обрабатывай ты их одним-единственным осн.трэдом в цикле ! какие проблемы-то ?


 
Slym   (2004-08-25 14:18) [17]

У тебя 4 процессора... делай 4 потока. Быстрее всеравно не получишь: затраты на переключение потоков, синхронизацию убьют твою поточность.

Ты говоришь быстрее 100 потоков чем 4 :) дык это потому что при одинаковых приоритетах вероятность выбрать 1твой из (100 твоих +100 системных) выше чем 1твой из (4 твоих +100 системных)
Ставь приоритет потоков повыше

А про память:
В момент сворачивания главного окна система сбрасывает всю память проги в своп очищая оперативку...
Прога работает, требует данные сброшенные в своп, система вытаскивает их в оперативку... и так до тех пор пока все данные в свопе не забьют оперативку


 
KSergey ©   (2004-08-25 14:20) [18]

> [16] Digitman ©   (25.08.04 13:57)
> в цикле ! какие проблемы-то ?

Реальные пацаны так не поступают ;)


 
lexxx   (2004-08-25 19:11) [19]

=) спасибо всем за советы, одно слово цикл меня пугает, потому что если сервак повиснет изза какойнить ошибки в одном файле, то считай ночь обработки потеряна, а тут время деньги, а с потокмаи не страшно, встанет один и бог с ним остальные три дело доделают %)
сделал приоритет повыше и 4 потока тож не плохо пашут, но вот размер конечно все равно растет в  памяти, Slym спасибо тебе отдельное, я чегото не догадался и не подумал про своп, ведь это действительно именно туда память сливается и фактически прога меньше размером не становится.


 
Anatoly Podgoretsky ©   (2004-08-25 19:20) [20]

Не только это, система может освободить ассоциированые ресурсы, которые она на всякий случай держит, выбросить не нужные ДЛЛ, которые также закешированы на всякий случай.



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

Текущий архив: 2004.09.12;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.034 c
3-1092710358
SASH2
2004-08-17 06:39
2004.09.12
wwDBEdit?


14-1092805116
syte_ser78
2004-08-18 08:58
2004.09.12
Обращение к Харьковчанам


3-1092436314
Noox
2004-08-14 02:31
2004.09.12
импорт в Paradox


3-1092503543
Ted
2004-08-14 21:12
2004.09.12
Как можно из DBgrid получить номер выделенной записи


1-1093573791
Ozone
2004-08-27 06:29
2004.09.12
MDI приложение