Если у меня есть стеки, назначенные типы значений, что их очищает? ГК - это только куча?
Вызывают ли значение ValueTypes GC?
Ответ 1
Если значения находятся в стеке, тогда, когда текущий стек стека "выскочил" (по возврату метода), значения эффективно очищаются... не будет никаких финализаторов, называемых или что-то в этом роде, но память, используемая этими значениями, будет повторно использована в следующий раз, когда стек получит это значение.
Обратите внимание, что типы значений не всегда выделяются в стеке. В частности, они часто выделяются как часть других объектов (например, класс с элементом int
), или они могут быть помещены в коробку.
Ответ 2
Выделенные значения стека автоматически исчезают с фреймом стека, в котором они содержатся (т.е. при возврате из метода).
Ответ 3
стек работает автоматически, не требуется явное освобождение памяти