Есть ли какая-нибудь конфигурация для сборщика мусора? - PullRequest
4 голосов
/ 20 мая 2010

Насколько я понимаю, сборщик мусора сам настраивается при запуске приложения, пороговое значение, используемое, например, когда объекты в управляемых кучах собираются, корректируется (в соответствии с MSDN) с течением времени.

Если приложение дает сбой, среда выполнения запоминает предыдущие настройки «сборки» мусора или какие-либо другие настройки?

Ответы [ 3 ]

8 голосов
/ 20 мая 2010

Да, в алгоритме сборщика мусора есть эвристика, которая заставляет его автоматически корректировать стратегию распределения. Наиболее заметным побочным эффектом этого является увеличение размера кучи поколения 0, когда программа работает и использует память. Обычно начинается с 2 МБ, может достигать ~ 8 МБ, если программа быстро потребляет память. Счетчики производительности, видимые в Perfmon.exe, хороши для этого.

Акцент сделан на «автоматическом», этот код был написан с категорическим предположением, что у программистов недостаточно информации, чтобы правильно управлять алгоритмом. Единственными «зацепками» являются вещи, о которых GC не может знать, например, неуправляемое использование памяти (GC.AddMemoryPressure) или роль программы (app.exe.config).

Детали эвристики не документированы. Тем не менее, вы можете получить некоторую справочную информацию из сегодняшнего издательства для документации по программному алгоритму, Патентное ведомство США. Большинство патентов на алгоритмы Microsoft GC зачислены Патрику Дуссуду, вы можете легко найти их с помощью запроса Google на его имя. Вот соответствующий .

5 голосов
/ 20 мая 2010

Нет, среда выполнения не запоминает свои предыдущие «настройки» сборки мусора, которые она изучила во время выполнения.

То, что вы можете настроить, - это одновременная сборка мусора, поместив в файл конфигурации следующее:

<configuration>
   <runtime>
      <gcServer enabled="true"/>
   </runtime>
</configuration> 

Или:

<configuration>
   <runtime>
      <gcConcurrent enabled="false"/>
   </runtime>
</configuration>

Полная документация для gcServer находится в MSDN .

Полная документация для gcConcurrent находится в MSDN .

1 голос
/ 07 декабря 2011

Пожалуйста, обратитесь к моему ответу, который включает в себя описания различных конфигураций / режимов ГХ по адресу:

Определение работающего сборщика мусора

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