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 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!