Кто-нибудь может рассказать мне о генерации сборщика мусора в .net - PullRequest
0 голосов
/ 01 апреля 2010

Кто-нибудь может рассказать мне о генерации сборщика мусора в .net?

Ответы [ 4 ]

4 голосов
/ 01 апреля 2010

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

  • Поколение 0 - вновь выделенные объекты. они никогда не были помечены для сбора еще.
  • Поколение 1 - объекты этого поколения выжили за один раз.
  • Поколение 2 - объекты этого поколения пережили более одного удара.

ГК значительно реже отбирает поколения с большим числом.

1 голос
/ 01 апреля 2010

Вы не генерируете сборщик мусора - сборщик мусора просто равен .

Запускает (в непредсказуемое время) и очищает любые предметы, на которые больше нет ссылок. Вы можете «предложить», что он может захотеть работать немедленно, вызвав метод Collect на сборщике мусора, к которому вы можете получить доступ через System.GC - но это не гарантирует, что он немедленно ответит.

Надеюсь, это поможет.

1 голос
/ 01 апреля 2010
0 голосов
/ 01 апреля 2010

сборщик мусора имеет 3 поколения 0 1 2

наивысшее поколение - 2. В .net сборщик мусора обычно вызывается неявно, но вы также можете принудительно вызвать GC.

при первом запускепоколения заполнены, т. е. 0 GEN, и ваше приложение хочет сохранить еще какое-то значение, тогда этот GC вызовет и проверит, какие элементы используются, а какие нет, и удалит неиспользуемый элемент, если все элементы используются, тогда все элементы будут переданынемного более высокий уровень, т.е. 1 GEN аналогично 2 GEN, когда все поколения заполнены, и вы хотите сохранить еще какой-то элемент, тогда GC выбросит память исключений из диапазона исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...