Как я понимаю, когда режим GC GC включен для приложения .NET, он выделяет логическую кучу на процессор, где потоки, запланированные на каждом процессоре, будут выделять память.Что происходит, когда запланированное продолжение запланировано на другом процессоре (логические кучи GC)?
Что происходит с памятью, выделенной Task
с несколькими ожиданиями? Он потенциально может быть выполнен на любом потоке ThreadPool, поэтому он может перепрыгивать между логическими кучами.
Сохраняется ли память, выделенная на предыдущей логической куче, в текущую исполняемую логическую кучу? Есть ли какая-либо стоимость, чтобы не выполнять продолжения Task
на той же логической куче/ядре?
Неправильный ментальной модели. Объекты уже живут в разных сегментах кучи без сервераGC: gen # 0 до # 2 и LOH. Таким образом, больше сегментов в serverGC не является зависанием. Более продуктивным является думать, что он собирает мусор на нескольких процессорах. –