Разница между размещением объекта в стеке и в куче - PullRequest
1 голос
/ 09 мая 2020

Это очень общий вопрос, связанный с C#. NET. Некоторые методы оптимизации производительности всегда пытаются размещать объекты в стеке, а не в куче, если это возможно; используя stackalloc вместо обычного Array, или используя тип структуры в качестве локальной переменной вместо класса. У меня вопрос: почему размещение объектов в стеке улучшает производительность? На мой взгляд, память - это память, поэтому среднее время выделения объекта будет таким же. Это просто из-за отказа от сборки мусора?

1 Ответ

1 голос
/ 09 мая 2020

Сборщик мусора действительно является важным фактором, когда речь идет о неуправляемом коде, поскольку выделение стека (с stackallo c) потребует от него меньше. Обратите внимание, что в случае кучи от сборщика мусора потребуется освобождение массива. С другой стороны, для управляемого кода распределение выполняется по умолчанию (вы не можете выбрать, как именно) - ссылочные типы выделяются в куче, а типы значений - в стеке.

...