GC.GetGeneration이 Int32.MaxValue를 반환할 수 있음

.NET 8부터 GC.GetGeneration은 비GC 힙("고정" 힙이라고도 함)에 할당된 개체에 대해 Int32.MaxValue를 반환할 수 있습니다. 이전에는 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은 기존 힙인 LOH(큰 개체 힙), SOH(작은 개체 힙), POH(고정된 개체 힙)와 약간 다른 새로운 비GC 힙을 도입했습니다.

GC.GetGeneration()의 반환 값을 배열 인덱서로 사용하거나 Int32.MaxValue가 예상되지 않는 다른 항목에 사용하지 않아야 합니다.

영향을 받는 API