GC. GetGeneration может возвращать Int32.MaxValue
Начиная с .NET 8, может вернуться Int32.MaxValue для объектов, GC.GetGeneration выделенных на кучи, отличные от GC (также называемые замороженными кучами), где ранее он вернул 2. Когда и как среда выполнения выделяет объекты в кучах, отличных от GC, является внутренней информацией о реализации. Строковые литералы, например, выделяются в куче, отличной от GC, и следующий вызов метода может возвращать Int32.MaxValue.
int gen = GC.GetGeneration("string");
Прежнее поведение
GC.GetGeneration Ранее возвращаемые целые значения в диапазоне от 0 до 2.
Новое поведение
Начиная с .NET 8, GC.GetGeneration может возвращать значение 0, 1, 2 или Int32.MaxValue.
Представленные версии
.NET 8( предварительная версия 4)
Тип критического изменения
Причина изменения
.NET представила новую, не GC-кучу, которая немного отличается от существующих куч, которые являются большими кучами объектов (LOH), небольшой кучей объектов (SOH) и закрепленной кучей объектов (POH).
Рекомендуемое действие
Убедитесь, что вы не используете возвращаемое значение из GC.GetGeneration()
индексатора массива или что-либо другое, где Int32.MaxValue непредвиденное.
Затронутые API
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по