Java GC должен быть "звуковым", но не обязательно сразу "завершенным". Другими словами, он спроектирован так, чтобы никогда не удалять объекты, которые по-прежнему доступны по крайней мере по одному пути (и, следовательно, вызывать висячую ссылку). Оно не обязательно должно быть немедленно завершено, поскольку может потребоваться время, чтобы удалить все, что можно удалить.
Я думаю, что большинство мифов о ГК происходят из-за неправильного понимания этой концепции.
Многие люди поддерживают слишком много переменных экземпляра в живых, и это вызывает проблемы, но это, конечно, не проблема.
Другие люди помещают локальные переменные в переменную экземпляра (например, передавая ее функции), а затем думают, что обнуление локальной переменной каким-то образом устраняет переменную, что, конечно, не соответствует действительности.
Наконец, есть люди, которые чрезмерно работают в GC и думают, что он сделает для них функциональное отключение (например, закроет соединения, когда переменная удалена), что, конечно, не так. Я думаю, что источником этой строки является «Я действительно покончил с этим, но я не уверен, как это обеспечить».
Так что, да, вы правы, что это ненужно.