OutOfMemory

Boas pessoal,
tenho uma app que precisa verificar de 4 em 4 segundos se determinada informação esta no banco de dados. E tenho um timer da seguinte forma :

ActionListener verificador = new ActionListener(){
public void actionPerformed(ActionEvent event){

try{
//Aqui ele faz o trabalho de consulta ao banco e envia a informação a outro lugar.
verificaNobancoEProcessa();
}catch(Exception ex){
System.out.println(ex);
}

}
}

Timer tim = new Timer(4000, verificador);
tim.start();

tudo funciona perfeito.
O problema é que se o sistem fica ligado mais do que 48 horas ele estoura com a mensagem :
OutOfMemory Exception e dai ele deixa de pesquisar o banco de dados.

Ai eu tenho que manualmente desligar o programa e voltar a ligar e tudo volata ao normal.
O poderá tar passando para ele dar esse erro ? será que ele cada vez que consulta cria uma thread e depois chega a uma limite que estoira ?

Alguma sugestão ? Obrigado .

O Timer usa apenas uma Thread, que de 4 em 4 segundos acorda.

Vc não está mantendo algum dado na memória que não precise?
Usa o profiler do NetBeans e acompanhe o consumo de memória, lá vai indicar.