Fechando a conexão com o banco de dados para evitar vazamento de memória

Pergunta de acompanhamento paraFechando conexões de banco de dados em Java

Connection conn = DriverManager.getConnection(
     "jdbc:somejdbcvendor:other data needed by some jdbc vendor",
     "myLogin",
     "myPassword" );

Statement stmt = conn.createStatement();
try {
    stmt.executeUpdate( "INSERT INTO MyTable( name ) VALUES ( 'my name' ) " );
} finally {
    //It's important to close the statement when you are done with it
    stmt.close();
}
conn.close();

Eu sei que conn.close () é necessário, mas não sei por quê. O coletor de lixo não liberará o objeto de conexão (e liberará todos os manipuladores armazenados nele que apontam para o banco de dados), uma vez que a chamada do método tenha terminado?