Controle da Memória da JVM

4 respostas
M

Pessoal,

estou com um problema. Seguinte, estou gerando uma arquivo que contém dados que são carregados da base, de 100 em 100, e colocados na memória. Então, o sistema faz a leitura dos dados e escreve no arquivo. Estou utilizando o PrintWritter para essa escrita e estou forçando o Garabge Collection, mas mesmo assim a memória está sendo consumida cada vez mais. Alguém tem algum boa solução para controlar os dados que estão na memória?

Aguardo resposta

4 Respostas

rmendes08

A única maneira de forçar o tamanho da heap é fazer isso externamente à sua aplicação, configurando o maxHeapSize da JVM. Quanto ao GC, não há como forçar sua execução, mesmo chamando System.gc() isso não garante a execução do GC, e mesmo que garantisse, ele não coleta objetos para os quais são mantidas referências fortes, ou seja, mesmo que houvesse uma maneira de forçar a execução do GC essa não é a maneira de evitar memory leaks.

M

Entendi!
Só teria essa solução de aumentar a memória Heap externamente?

rmendes08

Veja bem, é preciso delinear bem o problema … Qual é a sua situação ?

1 - depois de algum tempo o seu programa lança um OutOfMemoryError ?

2 - o consumo de memória está alto, mas o programa executa corretamente ?

3 - depois de algum tempo o progama fica lento ?

M

A situação é: depois de algum momento, em que a memória fica muito alta o programa fica lento.

Criado 30 de março de 2012
Ultima resposta 30 de mar. de 2012
Respostas 4
Participantes 2