Fórum Vazamento de mamoria #449134
22/07/2013
0
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!
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
Curtir tópico
+ 0
Responder
Posts
23/07/2013
Gabriel Simas
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:
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.
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.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)