manipulação do Garbage Collection

alguém sabe como manipular o Garbage Collection?
eu estou com um problemão, de vez em quando meu programa trava e dá o erro de java heap space, gostaria de saber se tem como chamar o garbage e limpar o q eu não estou mais usando!?
obrigado!

Você, após atribuir null a seus objetos, você pode chamar o método gc.
System.gc();
Este método faz uma chamada explícita ao coletor de lixo. Porém, não é garantido que o coletor de lixo irá executar exatamente neste momento. Mas vc pode tentar pra vê se minimiza o seu problema.

Ola,

Mas vc já procurou ver onde seu programa trava? ou é intermitente… pq travar é estranho, pode ser um loop infinito… uma condição estranha… coisas assim.

não é nenhum loop infinito e nem uma condição estranha ou coisa parecida! aew é q ta o problema, pois eu ja vasculhei o código todo e naum tem nada q poderia fazer isso (travar) e nem sempre faz isso, derrepente do nada ele trava, pode demorar minutos, dias e até semanas funcionando normal, até q derrepente trava! é um sistema de automação comercial, e foi o cliente q reclamou q de vez em quando faz isso, aew fiquei com “cara de taxo” pq não sabia nem o q dizer! mas vou ver se colocando o comando System.gc() de vez em quando ajuda!
se alguem sabar de mais alguma coisa eu agradeço!

Inicie sua aplicaçào com passando os atributos

-Xms 128M -Xmx 512M

Onde Xms é igual a memória inicial que sua aplicação utilizará, e Xmx igual a memória máxima que seu programa utilizará.

A JVM inicia por default com 64MB.

Estava com este problema em uma app web estes dias tbm, e até que lembrei deste problema foi um parto :wink: Mas resolveu todos estes problemas.

Qualquer coisa digite java -X no seu console para ver mais explicação sobre os parametros.

Abraços!

Kara não testei ainda, mas parece ser bem interessante!
mas poderias me explicar o q faz isso?
tipo, assim q ele estiver perto da memória máxima ele limpa a memória ou da algum aviso, afinal a JVM faz o q com este comando?
se souberes onde eu encontro algo mais sobre esse assunto pra eu ler agradeço!
abraço e t+!

Olá,

como já disse, o -Xms faz o seguinte:

  • quando vc inicia sua aplicação ele já inicia ela com aquele tanto de memória alocada para a app. ou seja, se vc colocar 256M ele iniciará a app com 256 megas alocados na memória para a sua aplicação.

o -Xmx diz qual será a memória máxima utilizada para sua aplicaçào antes de começar a dar Java Heap Space Exception. É claro que internamente na JVM ele deve ter mecanismos que irão ficar tentando evitar que isto aconteça, porém se sua app continuar alocando coisas na memória ficará impossível né.

O lugar onde vc pode conseguir mais informaçoes é no próprio site do java: http://java.sun.com, mas para começar digite em seu console: java -X pra ver o qeu ele te diz de cada argumento que vc possa passar.

cya

muito obrigado kara, ja testei aqui e funcionou legal, mas só o tempo agora pra ver se era isso q eu queria!
valeu mesmo!
Abraço!