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?
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
malbarbosa
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
malbarbosa
A situação é: depois de algum momento, em que a memória fica muito alta o programa fica lento.