Looking for .net Answers? Try Ask4KnowledgeBase
Looking for .net Keywords? Try Ask4Keywords

.NET FrameworkВывоз мусора


Вступление

В .Net объекты, созданные с помощью new (), выделяются в управляемой куче. Эти объекты никогда не будут окончательно завершены программой, которая их использует; вместо этого этот процесс контролируется сборщиком мусора .Net.

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

замечания

Сборщик мусора нацелен на снижение стоимости программы с точки зрения выделенной памяти, но при этом имеет стоимость с точки зрения времени обработки. Чтобы достичь хорошего общего компромисса, существует ряд оптимизаций, которые следует учитывать при программировании с помощью сборщика мусора:

  • Если метод Collect () должен быть явно вызван (что не так часто бывает так), рассмотрите использование «оптимизированного» режима, который завершает работу с мертвым объектом только тогда, когда на самом деле нужна память
  • Вместо вызова метода Collect () используйте методы AddMemoryPressure () и RemoveMemoryPressure (), которые запускают коллекцию памяти только в случае необходимости
  • Сбор памяти не гарантируется, чтобы завершить все мертвые объекты; вместо этого сборщик мусора управляет 3 «поколениями», объект иногда «выживает» от поколения к следующему
  • В зависимости от различных факторов, включая настройку тонкой настройки, могут применяться несколько моделей потоков, что приводит к разным степеням помех между резьбой коллектора мусора и другими прикладными нитями (нитями)

Вывоз мусора Связанные примеры