Pergunta interessante.
Primeiro vamos observar a classe Scanner
, só para conhecimento. Ela implementa a interface Closeable
public final class Scanner implements Iterator<String>, Closeable {...}
E a interface Closeable
extends AutoCloseable
public interface Closeable extends AutoCloseable {...}
E nessa AutoCloseable
, a própria doc da classe já dá uma ideia da função do método close()
.
Em resumo, você deve chamar o método close()
para liberar imediatamente qualquer recurso que tenha sido alocado, evitando exceções de esgotamento de recursos e outros problemas.