Задать вопрос
@mletov

Где найти код, наглядно показывающий полезность сборки мусора с C#?

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

Например:
Кусок кода 1. Мусор не собираем. Время выполнения 3 минуты.
Кусок кода 2 (переписанный кусок кода 1). Собираем мусор. Время выполнения стало 10 секунд.

Пожалуйста, подскажите, есть ли такие примеры?

PS По многим другим вопросам в книгах по программированию и мануалах тоже грешат. Рассказывают как сделать, но недостаточно акцентируют внимание на том, зачем это делать и какую выгоду может получить разработчик от использования той или иной фичи.
  • Вопрос задан
  • 198 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 4
@awesomer
В принципе, понятно, что память высвобождается, программа быстрее работает и т д.


Вы не правильно понимаете.
Полезность - в высвобождении мозгов программистов для более нетривиальных вещей.
Ответ написан
Комментировать
Griboks
@Griboks Куратор тега C#
Где найти код, наглядно показывающий полезность сборки мусора с C#?

Его нету. В том то и суть!
Ответ написан
Комментировать
@ZhanD
Возможно немного не о том, но в свое время озадачился вопросом "А накой мне using?". Наткнулся на хорошую статью по ней и про сборщик мусора тоже.
Ответ написан
Комментировать
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
1 - такого кода нет (см п3)

2 - в книгах/сети не особенно то и грешат, скорее вам пока не понятны пояснения что и когда стоит делать

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

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

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

ps
Например:
Кусок кода 1. Мусор не собираем. Время выполнения 3 минуты.
Кусок кода 2 (переписанный кусок кода 1). Собираем мусор. Время выполнения стало 10 секунд.
если у вас комп с 4/8/16 Гб ОЗУ, а задача расходует 10-100.. 200-300 Мб - сборщик мусора вообще не будет вмешиваться (если конечно память не забита и так под завязку).. и за какие то 10 микросекунд очистит мусор, пока вы смотрите на слово типа Finished и осознаете его значение .. как то так
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы