Предотвращает ли существование итератор сборку мусора из коллекции?
Да. Итератор должен включать ссылку на коллекцию. Это необходимо для любой нормальной реализации методов next()
и hasNext()
1 .
Так что, если итератор доступен, то и коллекция тоже.
Это также может сработать против вас. Например, нежелательная ссылка на итератор, сохраненный в переменной stati c, может вызвать утечку памяти, затрагивающую всю коллекцию.
1 - Гипотетически, реализация итератора могла бы использовать программный или слабая ссылка, но следствием может быть то, что итерация «ломается» из-за того, что сборщик мусора собирается.