Cierre de la conexión de la base de datos para evitar la pérdida de memoria.

Pregunta de seguimiento paraCierre de conexiones de base de datos en 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();

Sé que conn.close () es necesario pero no sé por qué. ¿No liberará el recolector de basura el objeto de conexión (y con él liberará cada controlador almacenado en él que apunta a la base de datos), una vez que finalice la llamada al método?