Можно ли остановить сборку мусора .NET?

Возможно ли программисту программно запустить/остановить сборку мусора на языке программирования С#? Например, для оптимизации производительности и т.д.

Ответ 1

Не совсем. Вы можете дать GC подсказки с помощью таких методов, как GC.AddMemoryPressure или GC.RemoveMemoryPressure, но не останавливайте его прямо.

Кроме того, сбор мусора не является настолько интенсивным процессом. Программисты очень редко вспоминают об этом.

Ответ 2

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

Если вы заинтересованы в том, чтобы настроить GC на производительность (или, скорее, настроить ваше приложение, чтобы улучшить его производительность по сравнению с GC), MSDN имеет довольно приличное описание способов сделать это.

Ответ 3

Между тем, возможно, существуют методы в GC class:

GC.TryStartNoGCRegion(...) и GC.EndNoGCRegion().

Ответ 4

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