Conexão com banco.. duvída ao não fechar

O que acontece com a minha conexão caso eu a abra e não a feche?
por exemplo:

public void fazAlgo(){
	Class.forName("meu.jdbc.Driver").newInstance();
	Connection c = DriverManager.getConnection("url","usr","pass");
	PreparedStatement p = c.preparedStatement("sql qqer");
	p.execute();
}

A minha conexão fica no “limbo”??
Ela é fechada sozinha???
Valeu

Ela fica pendurada no banco de dados, e se outras não se fecharem, elas vão se acumulando até minar os recursos do BD e sua aplicação pára de responder (“cai”).

Foi o que aconteceu com uma app aqui, que eu tvie que sair nos fontes caçando recursos sem .close();

Como você deve saber, tanto Connection quanto PreparedStatement são interfaces (não classes) que são implementadas pelas classes do seu driver de JDBC. Pode ser que as classes tenham um método “finalize” que ao ser chamado eventualmente encerre a conexão (eu disse “pode ser”) e pode ser que esse método finalize acabe sendo chamado algum dia (eu disse “pode ser”). Como tem um monte de “pode ser” nessa minha declaração é melhor não achar que “vai ser”. Ou seja, por favor, feche as conexões sempre, não deixe toalhas molhadas em cima da cama e feche a tampa do sanitário depois de dar a descarga.