Когда ручной вызов GC.Collect() оправдан?

158
21 февраля 2019, 16:50

Часто нахожу в коде вызовы GC.Collect(), например при работе с графиков через GDI+.

В умных книжках пишут, что его никогда не нужно вызывать самому.

Собственно вопрос, а есть ли оправданные случаи, когда его нужно вызывать или это признак плохого когда?

Answer 1

Обычно не нужно. Иногда имеет смысл это делать:

  1. После уничтожения большого количества объектов (например, закрытия формы с большим количеством элементов)

  2. Когда приложение имеет четко выраженные периоды активности и простоя. Если принудительно вызвать сборку мусора в период простоя, уменьшится вероятность того, что она произойдет в период активности и затормозит выполнение кода.

Ссылки:

When to call GC.Collect()

When is it acceptable to call GC.Collect?

READ ALSO
Не удается неявно преобразовать тип “string”

Не удается неявно преобразовать тип “string”

Был простенький запрос на извлечение списка по убыванию из базы с пагинацией на странице:

150
Как использовать InvokeRequired, BeginInvoke в классе?

Как использовать InvokeRequired, BeginInvoke в классе?

Сделал приложение, которое собирает данные репозитариев с githubcom

145
Позиционирование текста в ToolStripMenuItem

Позиционирование текста в ToolStripMenuItem

Я задал первому елементу меню висоту 60 и textalign = MiddleCenter Но елемент просто игнорит свойство

149
Обработка нескольких IndexOutOfRangeException

Обработка нескольких IndexOutOfRangeException

Ситуация: В методе происходит парсинг данных:

173