Ваш вопрос написан очень запутанно.
Обычно все ссылочные типы отбираются, когда на них нет ссылок.
Ссылка типы не собираются. Экземпляры ссылочных типов собраны. И они не собираются, когда экземпляр не имеет ссылок. Они собираются , когда запускается сборщик мусора и определяет, что указанный объект не может быть получен из известного корня .
А как насчет переменной enum? будет ли он собираться мусором, даже если на него не распространяется (значит, на него больше не ссылаются)?
Область действия переменной - это область текста программы, в которой переменная может быть доступна по ее имени. область действия переменной слабо связана с ее продолжительностью жизни , о чем вы и просите. Время жизни переменной может быть длиннее или короче, чем период времени, в течение которого управление программой входит в его область действия!
Кроме того, совершенно неясно, что вы подразумеваете под "будет ли переменная enum собираться мусором?" Переменные - это места хранения, поэтому переменная должна где-то быть . Где находится переменная ? Это поле класса? это локальная переменная? Это закрытая внешняя переменная лямбды? Это элемент массива перечислимого типа? Все это влияет на то, собирается ли хранилище, связанное с переменной, и, если это так, когда оно собирается.
Ваш вопрос не имеет никакого смысла, как вы его задали. Вы можете уточнить вопрос?
Вы также можете прочитать мой ответ на этот связанный вопрос:
Получают ли типы значений сборщик мусора?