![]() |
Модераторы: 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 ) ![]() -------------------- Ищем .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. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |