Да, в алгоритме сборщика мусора есть эвристика, которая заставляет его автоматически корректировать стратегию распределения. Наиболее заметным побочным эффектом этого является увеличение размера кучи поколения 0, когда программа работает и использует память. Обычно начинается с 2 МБ, может достигать ~ 8 МБ, если программа быстро потребляет память. Счетчики производительности, видимые в Perfmon.exe, хороши для этого.
Акцент сделан на «автоматическом», этот код был написан с категорическим предположением, что у программистов недостаточно информации, чтобы правильно управлять алгоритмом. Единственными «зацепками» являются вещи, о которых GC не может знать, например, неуправляемое использование памяти (GC.AddMemoryPressure) или роль программы (app.exe.config).
Детали эвристики не документированы. Тем не менее, вы можете получить некоторую справочную информацию из сегодняшнего издательства для документации по программному алгоритму, Патентное ведомство США. Большинство патентов на алгоритмы Microsoft GC зачислены Патрику Дуссуду, вы можете легко найти их с помощью запроса Google на его имя. Вот соответствующий .