Vazamento de mamoria

Java

22/07/2013

A todos, boa tarde!

Tenho um projeto que esta consumindo muita memoria. O projeto tem um ArrayList<Cliente> com aproximadamente 1.000.000 de clientes, porem após limpar a lista "ArrayList.clear" a memoria alocada não é liberada e isso acaba impactando na performance do restante da aplicação. Já tentei chamar o GC, mas a memoria só é liberara quando o projeto finaliza. Existe alguma forma de desalocar os itens da lista para que possam ser removidos pelo GC?

A acredito que vale a pena mencionar que a referencia em questão é um atributo da classe: clientes ArrayList<Cliente>.

Pela atenção muito obrigado!
Andre Ferreira

Andre Ferreira

Curtidas 0

Respostas

Gabriel Simas

Gabriel Simas

22/07/2013

Fala André,

Bem, o que precisamos fazer é forçar o GC a agir, como nunca sabemos bem o momento em que o mesmo age, você pode usar método clear, que esvazia o array, mas o mantém no aguardo de novas gravações e depois disso, você força o GC a entrar colocando sua arrayList = null. Um exemplo:

listaTeste.clear();
listaTeste = null;


Isso vai forçar o GC e ser executado por ser uma grande quantidade de dados.

Verifique isso e nos informe para que possamos te ajudar melhor.

Forte Abraço, pode contar com a gente no que precisar.
GOSTEI 0
POSTAR