Limpar memoria

Boa tarde pessoal,

Seguinte:

Tenho varias tabelas de associação, uma especie de “Dê/Para”, criou um mapa para cada uma dessas tabelas.
Map<String, Objeto> xxx.

Numa base gigante, onde tenho que buscar dados inconsistentes em varias tabelas.
Clientes, fornecedores, contas correntes, etc.
Dados inconsistentes neste caso, seria a ausencia de determinada informação em determinado campo, ou seja, verifico no mapa correspondente se a informação esta la, não estando esta inconsistente.
Jogo tal informação inconsistente numa lista de inconsistencia.

Crio uma lista para cada dado que estou lendo, contas a receber, recebidas p.e.

O problema é que estas listas são muito grandes, entao fiz um metodo passando a lista e utilizando o
clear() e system.gc(), para entao partir para a proxima lista e fazer a validação.

Fiz uma pesquisa no guj, p.e
http://www.guj.com.br/posts/list/10405.java#54353
http://www.guj.com.br/posts/list/187.java#878

so que as informação nestes posts dizem que não é garantido que seje feita remoção dos dados da memoria.

Como poderia resolver esta situação?

Se não fui claro, por favor me avisem.

vlw

EM JAVA NÃO DÁ PRA FORÇAR O GC…ENTÃO O QUE VC PODE FAZER É SETAR OS OBJETOS PARA NULL E DEIXAR ELE FAZ O TRABALHO DELE…

É exatamente como o Giulliano falou: o máximo que você pode fazer é “pedir educadamente” que a JVM chame o Garbage Collector. Não dá pra forçar sua utilização.
A melhor maneira é anular seus objetos, fechar suas conexões, liberar os recursos de rede e filesystem e etc…

Abraços.

Caramba, tenho que pensar em algo, a unica forma entao seria, enxugar o maximo possivel na pesquisa, uma vez que utilizo hibernate.

vlw a confirmação.

um abraço

NO CASO DO HIBERNTAE RECOMENTO FORTEMENTE O USO DO “FETCHTYPE.LAZY”

E BASTANTE MEMÓRIA DISPONIVEL PRA SUA JVM…

Uma coisa que eu já observei em diversos profilers é que o gc é muitíssimo eficiente e muito raramente ignora o comando system.gc.

Se a memória está cheia, por exemplo, ele roda com muito mais frequência, e por mais tempo, eliminando até mesmo blocos de uso mais recente e fazendo desfragmentações para poupar espaço.

Se ele não estiver desalocando, é bom acompanhar sua aplicação com um profiler, e ver se tudo está sendo desreferenciado mesmo.