Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поедание памяти процессом. / 25 сообщений из 60, страница 1 из 3
18.03.2015, 11:44
    #38908062
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
Привет
Написал прогу (C#), работает как фоновый процесс, окон нет. Раз в минуту проверяет файл на диске на наличие новых записей. Так вот при старте процесс потреблял около 3600 КБ памяти. Во время работы в течение суток потребление выросло под 9000 КБ и выше не поднималось. Уже несколько суток наблюдаю его в диспетчере задач винды, больше 10000 КБ не поднимается. Из-за чего такое может быть? Не похоже что это нормально.
...
Рейтинг: 0 / 0
18.03.2015, 11:51
    #38908074
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
rigorMortisПривет
Уже несколько суток наблюдаю его в диспетчере задач винды, больше 10000 КБ не поднимается.

10мб? Это ниочем
...
Рейтинг: 0 / 0
18.03.2015, 11:57
    #38908094
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
Дело не в объёме, а в динамике.
...
Рейтинг: 0 / 0
18.03.2015, 12:04
    #38908113
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
Пути фрамеворка неисповедимы.
...
Рейтинг: 0 / 0
18.03.2015, 12:07
    #38908122
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
rigorMortisне поднимаетсяну как, пару дней, ты можешь и в палатке пожить...
ежели на месяц - тут желательно хотя бы комнату или квартиру... в общем более-менее комфортно хочется расположиться...
но вряд ли через год тебе потребуется многоэтажка (согласно динамике)
...
Рейтинг: 0 / 0
18.03.2015, 12:38
    #38908198
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
rigorMortisПривет
Написал прогу (C#), работает как фоновый процесс, окон нет. Раз в минуту проверяет файл на диске на наличие новых записей. Так вот при старте процесс потреблял около 3600 КБ памяти. Во время работы в течение суток потребление выросло под 9000 КБ и выше не поднималось. Уже несколько суток наблюдаю его в диспетчере задач винды, больше 10000 КБ не поднимается. Из-за чего такое может быть? Не похоже что это нормально.

14 дней можно юзить честно полный функционал

http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/
...
Рейтинг: 0 / 0
18.03.2015, 12:44
    #38908210
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
rigorMortis,

это нормально. Каждому процессу резервируется некоторое количество памяти про запас. Она так и будет числиться за процессом, даже если реально не нужна. Как только в системе станет не хватать памяти, ОС пнёт CLR, тот начнёт пинать сборщик мусора и через какое-то время незанятая память освободится.
Можно и вручную уменьшить working set. Google it.
...
Рейтинг: 0 / 0
18.03.2015, 13:48
    #38908341
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
rigorMortis,
Когда в определенном поколении не хватает памяти, среда запрашивает у ОС еще. И так пока не станет хватать памяти или OutOfMemoryException. Последняя на 64 разрядных платформах встречается реже.
...
Рейтинг: 0 / 0
18.03.2015, 14:49
    #38908482
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
Это понятно всё. Но у меня там всего лишь чтение файла с диска в цикле. По факту это работает и с 3600 КБ и с 10000 КБ одинаково. Если работает с 3600 то почему увеличивается до 10000? Сборщику мусора вполне хватит времени в течении паузы между циклами - 60 сек. - убрать всё лишнее.
...
Рейтинг: 0 / 0
18.03.2015, 14:54
    #38908494
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
Код: c#
1.
2.
GC.Collect(GC.MaxGeneration);
GC.WaitForPendingFinalizers();
...
Рейтинг: 0 / 0
18.03.2015, 14:56
    #38908503
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
rigorMortisДело не в объёме, а в динамике.
И какова динамика? Пока вижу "несколько суток" и 10 Мб. Это не динамика, это конечный результат измерения. Причем, очень даже приемлемый.
...
Рейтинг: 0 / 0
18.03.2015, 14:59
    #38908513
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
640 KB хватит ВСЕМ!
...
Рейтинг: 0 / 0
18.03.2015, 14:59
    #38908515
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
a_voronin
Код: c#
1.
2.
GC.Collect(GC.MaxGeneration);
GC.WaitForPendingFinalizers();


Не надо так делать. Во-первых, нужна реальная картинка - а именно динамика, скажем, за неделю. В разрезе каждого дня. Во-вторых, нужно искать учетку, если она имеется. Все эти пляски с GC от лукавого и до добра не доводят. Проблемы нужно локализовывать, а не накладывать постоянно лейкопластырь.
...
Рейтинг: 0 / 0
18.03.2015, 15:00
    #38908516
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
МСУнужно искать утечку
...
Рейтинг: 0 / 0
18.03.2015, 15:03
    #38908524
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
rigorMortisСборщику мусора вполне хватит времени в течении паузы между циклами - 60 сек. - убрать всё лишнее.

С чего ты решил, что сборщик мусора будет срабатывать в паузах между циклами?
...
Рейтинг: 0 / 0
18.03.2015, 15:05
    #38908530
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
А с чего ты решил что нет?
...
Рейтинг: 0 / 0
18.03.2015, 15:06
    #38908533
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
rigorMortisА с чего ты решил что нет?
А с чего ты решил, что да? Ты документацию когда последний раз открывал?
...
Рейтинг: 0 / 0
18.03.2015, 15:10
    #38908540
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
Понятно, дальше не надо.
...
Рейтинг: 0 / 0
18.03.2015, 15:14
    #38908553
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
Согласен. Иногда лучше изучить доки и понять, как работает коллектор, чтобы продолжать дискуссию. Приходи позже, сейчас без вариантов
...
Рейтинг: 0 / 0
18.03.2015, 15:34
    #38908584
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
rigorMortisА с чего ты решил что нет?
Сборщик мусора ленив и не заработает, пока будет хватать в куче памяти или пока петух программист не клюнет будет дергать методы GC.
...
Рейтинг: 0 / 0
18.03.2015, 16:08
    #38908650
mikron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
...
Рейтинг: 0 / 0
18.03.2015, 21:20
    #38909080
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
МСУa_voronin
Код: c#
1.
2.
GC.Collect(GC.MaxGeneration);
GC.WaitForPendingFinalizers();


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

Утечку на .NET? Вы батенька что-то попутали. Это не C++.
Мне кажется вам надо перечитать, как работает распределение памяти в .NET, и вот это решит проблемы.
...
Рейтинг: 0 / 0
18.03.2015, 21:23
    #38909086
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
a_voroninУтечку на .NET? Вы батенька что-то попутали. Это не C++.
Нет, батенька, это вы что-то попутали.

https://msdn.microsoft.com/ru-ru/magazine/cc163491.aspx Обнаружение и предотвращение утечек памяти в управляемом коде

Понятие об утечках памяти в управляемых приложениях.

Использование неуправляемой памяти в приложениях .NET.

Помощь сборщику мусора .NET в его работе.



После прочтения материала продолжим разговор. А пока - учить матчасть. Твой уровень школьника мне не интересен :)

a_voroninМне кажется вам надо перечитать, как работает распределение памяти в .NET, и вот это решит проблемы.
...
Рейтинг: 0 / 0
18.03.2015, 21:29
    #38909090
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
a_voronin, а вот тут (для таких как ты) я запилил рецепт http://codearticles.ru/articles/1448 в котором говорится, что "никогда не вызывайте сборщик мусора и не вмешивайтесь в его работу". Ну только если ты не решил запилить свой коллектор и составить конкуренцию MS
...
Рейтинг: 0 / 0
18.03.2015, 21:37
    #38909096
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поедание памяти процессом.
Самое ценное в статье Ковача - это заключение.

https://msdn.microsoft.com/ru-ru/magazine/cc163491.aspx Заключение: В настоящей статье рассматриваются различные проблемы, которые возникают в приложениях .NET и могут стать причиной утечек памяти или чрезмерного потребления памяти. Конечно, .NET в большой мере избавляет от забот о памяти, но чтобы быть уверенными, что приложение работает правильно и эффективно, нужно внимательно следить за тем, как оно использует память. Тот факт, что приложение является управляемым, не означает, что нужно выбросить и забыть профессиональные навыки и накопленный опыт разработки и отладки программных систем, полностью положиться на сборщик мусора и ждать, что он сотворит чудеса . Разрабатывая и отлаживая приложение, нужно постоянно следить за значениями счетчиков, которые характеризуют эффективность использования памяти.


Так что, a_voronin, самое время для изучения .NET :)
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поедание памяти процессом. / 25 сообщений из 60, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]