Можно ли остановить сборку мусора .NET?
Возможно ли программисту программно запустить/остановить сборку мусора на языке программирования С#? Например, для оптимизации производительности и т.д.
Ответы
Ответ 1
Не совсем. Вы можете дать GC
подсказки с помощью таких методов, как GC.AddMemoryPressure
или GC.RemoveMemoryPressure
, но не останавливайте его прямо.
Кроме того, сбор мусора не является настолько интенсивным процессом. Программисты очень редко вспоминают об этом.
Ответ 2
В общем, нет. И большинство людей считают, что преждевременная оптимизация беспокоится о сборе мусора, если вы не сделаете какое-то профилирование и не узнаете, что это действительно причина низкой производительности в вашем приложении.
Если вы заинтересованы в том, чтобы настроить GC на производительность (или, скорее, настроить ваше приложение, чтобы улучшить его производительность по сравнению с GC), MSDN имеет довольно приличное описание способов сделать это.
Ответ 3
Между тем, возможно, существуют методы в GC
class:
GC.TryStartNoGCRegion(...)
и GC.EndNoGCRegion()
.
Ответ 4
Нет, нет. В лучшем случае вы можете запускать сборку мусора самостоятельно, хотя это считается очень плохой вещью, поскольку это может помешать встроенным алгоритмам планирования, используемым GC.