![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
Всем вновь добрый день. Вопрос общего характера можно сказать.
Программа конектится к считывающему устройству и читает данные с него в двух потоках, (главный поток не вмешивается). Так вот, при считывании прога набирает по 5-10кб в секунду. Через полчаса под 30 метров. получается через 10 часиков работы под 200 метров весить что ли. Мало того, будет еще один считыватель, тогда под все 400 метров Каким то образом можно решить проблему с этим? Сборщик мусора либо ничего не делает либо 200кб прибавляет -------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| Zakonnic |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 25.4.2006 Репутация: 2 Всего: 6 |
Ну, это по идее зависит от способа организации данных. Попробуй Dispose() явно вызывать у тех структур, куда ты пишешь данные. Либо юзать массивы фиксированного объема. Вот такой вот общий ответ на вопрос общего характера - контроль над структурами данных
--------------------
...и никогда не пишите в комментариях правду |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
структур 10-15, а массив один StringBuilder, фикисрованный. Ну чтож, скоро протестим
-------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
вообщем это большая Ж***, все равно растет память. В консольной проге от производителя, для показа функциональности, память растет теми же темпами
Какое же может быть решение люди?? P.S. надо будет на ночь оставить работать ноут, до скольки дорастет этот прирост. -------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
CYBERDREAM, поставить .NET Memory Profiler и посмотреть какие объекты создаются, как часто, и как долго остаются висеть. Там есть real-time таблица с количеством объектов по имени класса, кол-вом байт, кол-вом созданных в секунду и т.п.
-------------------- ![]() |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
Thx. надеюсь решится этот вопросик
-------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
не забывай обнулять ссылки на твои
как только они перестают быть нужными. И для всех объектов типов, которые реализуют Dispose() и Close(), вызывай эти методы обязательно -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| Dino99rus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 10.1.2007 Репутация: 1 Всего: 2 |
попробуй это, мне помогло. Вычитал из одной статьи на gotdotnet.ru |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
2 tol05 увы не помогло. Но все равно признателен
2 Dino99rus Огромное человеческое спасибо, во первых при запуске окна, в котором считывание происходит, объем уменьшился на 10мб, при каждом считывании память аналогично очищается. Просто Супер, молодца Ура товарищи, сделали Всем спасибо Это сообщение отредактировал(а) CYBERDREAM - 24.11.2010, 14:48 -------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Терзают смутные сомнения по поводу pagefile.sys, а не растёт ли он при этом?... Может и не растёт, но всё же интересно, это GC отрабатывает или просто память процесса сбрасывается в файл подкачки. -------------------- ![]() |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
pagefile.sys остается абсолютно неизменным. Может быть еще подвохи?
-------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
эта операция "помечает" все страницы памяти выделенные процессом как ненужные ему в данный момент. если при этом эти же данные не отображены больше ни в один процесс, то велика вероятность, что они будут сброшены в свап или в тот файл из которого они были изначально отображены. говоря простым русским языком, операция очень опасная и может сильно замедлить работу приложения, т.к. данные будут читаться с диска. кроме того, проблему утечек абсолютно не решает, свап-файл не резиновый, а у некоторых он и вовсе отключен.
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
Не весело
-------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
для начала надо понять утечки это или нет, для этого нужен профайлер или обычные счётчики .NET CLR Memory из Performance Monitor. если утечки, то бороться; если нет, значит программа написана не подходящим образом и нуждаетя в оптимизации или .NET не подходящая платформа для данной программы.
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
есть прога - для демонстрации считывания. Так же может и записывать данные в метки и т.д. При запуске 50мб весит. И приросит памяти аналогичный моему. Если остановить считывание то память не освобождается, возобновив считывание - вновь прирост.
Так же есть консольная прога написанная на плюсах с использованием библиотечки (собственно ее я и переделал на шарп) - так же дает прирост памяти. По идее это не моя ошибка. -------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
значит при считывании утечка, следи за потоком данных и смотри что не освобождается. может хэндлы какие потоков\файлов\событий, объёмы утечки как раз таки очень напоминают утечку хэндлов. и код давай.
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
Даю код
Проверить увы смогу лишь на работе в понедельник если что. Домой девайс тащить гиблое дело -------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
CYBERDREAM, мемори профайлером ты давно бы уже нашёл где "течёт" память...
-------------------- ![]() |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
ужос.
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
2 stab : возможно там и есть утечка эта. Но если так, то проблему уже не решить по ходу.
2 Mr. Duda пока не разрулил с профайлером, на выходных поштудирую что к чему, авось поможет -------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
Убрал SetProcessWorkingSetSize.
Как ни странно, но когда объем занимаемой прогой памяти доходит до 21-22 метрах ( по крайней мере при нынешних настройках) сбрасывается до 12 и т.д. а бывает и раньше. Вообщем пока неясно, когда он освобождает ресурсы и какие Но это только если запускать из Memory Profiler'a Это сообщение отредактировал(а) CYBERDREAM - 24.12.2007, 11:35 -------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
Не знаю глюк мой, или бывают еще такие случаи, но факт остается фактом.
Если свернуть окно (в котором происходит считывание и вывод всех меток ) то размер выделяемой памяти доходит до 1,5-2,5 мегабайт!!!!! ну и дальше прирост происходит. Если развернуть то сразу прибавляется 1метр ну а дальше прирост. Вообщем сворачиваением можно сказать происходит сбор мусора, но не приятный способ конечно. Кто то сталкивался с подобным? -------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
при сворачивании как раз происходит SetProcessWorkingSetSize, в майкрософте раньше думали, что раз свернул, то на скорость исполнения задачи пофик и можно освободить память, с приходом висты всё изменилось - память больше не ресурс, память - это кэш.
ну вот значит и отлично всё, команда асинизаторов делает своё грязное дело. -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
в случае падения до 12 метров, я оказывается тогда тоже сворачивал окошко Команда асинизаторов - это что и для чего хотелось бы узнать. В присоединенном файле - скрин с профайлера Это сообщение отредактировал(а) CYBERDREAM - 24.12.2007, 14:02 Присоединённый файл ( Кол-во скачиваний: 27 )
ScreenShot.JPG 35,36 Kb-------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Вертикальные полоски на скрине - это сборки мусора (ассенизаторы
-------------------- ![]() |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
Всем спасибо. Пока что обойдусь с помощью
Кстати, если считыватель не видит в своем окружении никаких меток, то память не растет. -------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| Bladerender |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 19.7.2007 Репутация: нет Всего: нет |
попробуй делать считывание информации в Queue<T>. У нее есть два чудестных метода Enqueue() and Dequeue(). Поток, который тянет информацию вкидает эту информацию порциями (обьектами) в очередь. А метод, который что-то с этими данными что-то делает, запускай в паралельном потоке. Как только метод сделает деквае следующей порции инфы и метод обработки этих данных завершиться, ссылка на эту порцию данных пропадет и сборщик соберет ее в удобное для него время.
свалка для сборщика Queue<T> / ^ [1] / <------[2]-------- Dequeue() --- | [3][4][5] | <---[6]------- Enqueue() Это должно помочь. Это сообщение отредактировал(а) Bladerender - 23.5.2009, 10:05 |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
Bladerender, попробуй смотреть на даты сообщений.
|
|||
|
||||
| Bladerender |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 19.7.2007 Репутация: нет Всего: нет |
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |