При использовании асинхронных операций в .NET размер стека уменьшается. 1 Это связано с тем, что каждый поток из пула в современной ОС имеет стек размером 1 Мб плюс невыгружаемый стек ядра. 1 В то время как издержки по памяти для асинхронной операции гораздо меньше, чем для блокирующегося потока. 1
Кроме того, когда асинхронный метод приостанавливается в точке ожидания, стек для метода исчезает. 2 Чтобы данные были доступны методу после возобновления, компиляторы C# и Visual Basic «поднимают» локальные переменные в структуру конечного автомата, которая потом упаковывается и помещается в кучу. 2
Таким образом, асинхронный код позволяет использовать больше памяти для других операций (например, для кеширования). 1