Desenvolvi um sistema de acessa a uma base da dados DB2… Nela existem 2 Theads do tipo Runnable que criam um Statement e alguns ResultSets em cada uma, depois de algum tempo rodando a aplicação aparece que excedeu o limite de Statements para conexão com o banco de dados.
Bem mas pelo que sei ao final do método Run(), tudo que existe na classe que implementa a Runnable morre(sai da memória), estou correto???
Ex (classe extendida runnable):
static class VerificaNF implements Runnable {
Statement st = conexao.getStatement();
ResultSet r1 = null;
ResultSet r2 = null;
A cada a Thread cria uma nova conexão e resultsets, ao final eu apenas as fechava com um .close()… estou agora testando a sugestão do “thingol”, espero que funcione!
depois q a thread terminar de executar, os objetos que nao estiverem mais ativos (apontando p/ Null) vao ser marcados p/ coleta de lixo e serão limpos, mas quem decide isso eh o GC, vc n tem acesso direto a ele diretamente. cara, vc n acha q eh o limite de conexoes com o banco q ta estourando? seu banco de dados suporta Sei_La_Quantas_Conexoes_Simultaneamente?? pelo q entendi, vc ta abrindo varias conexoes…e talvez elas nao estejam sendo fechadas…
Garbage Collector. eh o coletor de lixo…ele tem um algoritmo interno q varre a memoria p/ limpar os objetos q nao referenciam nada…q banco vc usa?? aumente o numero de conexoes simultaneas permitidas no banco de dados e veja se dá certo…
Eu to usando o banco DB2, eu fecho a conexao e mesmo assim me retorna a mensagem, o problema é que dai eu tenho que fechar a aplicação para conseguir conectar denovo, a aplicação não consegue mais reconectar com o Banco de Dados…