Так что CLR использует третий подход: выборочно предотвращает перемещение блоков кучи. Сборщик мусора может свободно работать во время операций ввода-вывода, но некоторые блоки кучи могут быть закреплены. Закрепление блока устанавливает флаг, который сообщает сборщику, что блок в настоящее время не может быть перемещен. Таким образом, если сборщик мусора встретит такой блок, он просто оставит его на месте, но попытается переместить все вокруг него.
Программируем на C# 8.0. Разработка приложений
·
Иэн Гриффитс