Zamykanie połączenia z bazą danych, aby uniknąć wycieku pamięci

Kontynuuj pytanie doZamykanie połączeń z bazą danych w Javie

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();

Wiem, że conn.close () jest konieczne, ale nie wiem dlaczego. Czy garbage collector nie zwolni obiektu połączenia (a wraz z nim zwolni każdy przechowywany w nim program obsługi, który wskazuje bazę danych), po zakończeniu wywołania metody?

questionAnswers(2)

yourAnswerToTheQuestion