Ola Marcos,
----- Original Message -----
From: Marcos Ibuki <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Friday, October 20, 2000 9:08 PM
Subject: Problema para liberar memória.
>
> Oi pessoal.
>
> Estou com um problema de performance. Por exemplo,
> declaro uma variável desta forma:
>
> for (int i=0;i<max;i++) {
> Vector vect = new Vector();
> ...
> vect = null;
> ...
> }
> Aparentemente esta área do programa está gerando um
> consumo muito alto de memória, uma vez que "max"
> interações acontecem e "vect" é um vetor com muitas
> posições (muitas mesmo).
>
> Eu pensei (e ainda penso) que atribuindo "null" à
> variável ocorria uma liberação da memória alocada para
> aquela variável, de forma que o garbage collector se
> encarregaria do resto.
>
> Mesmo forçando o garbage collector com System.gc();
> o consumo de memória continuou a aumentar, a cada vez
> que o código acima era executado
>
> Alguém poderia por favor me esclarecer esta questão?
Você pode tomar várias medidas para melhorar o desempenho deste
código...
1) Se voce estiver acessando o vetor a partir de um único thread use
ArrayList ao inves de Vector (ArrayList não é synchronized)
2) Passe como parametro para o construtor a capacidade inicial de
elementos que você espera utilizar:
ArrayList array = new ArrayList(CAPACIDADE_INICIAL);
3) Instancie o ArrayList fora do for e use array.clear() ao invés de
vect = null
ArrayList array = new ArrayList(CAPACIDADE_INICIAL);
for (int i=0;i<max;i++) {
...
array.clear();
...
}
array = null;
Quando você atribui null a uma váriável E o objeto referenciado por ela
nao possui nenhuma outra referencia ele PODE ser garbage collected.
Quando voce chama System.gc(), voce apenas indica a JVM que ela deveria
executar o garbage collector... isto não garante que ela ira executar.
Leonardo
.........................................
Leonardo Souza Mario Bueno
itera Informática
[EMAIL PROTECTED]
+55 27 337-0317
Visite o site da itera em:
http://www.itera.com.br
.........................................
>
> Obrigado.
>
> Marcos Yoshiaki Ibuki
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Messenger - Talk while you surf! It's FREE.
> http://im.yahoo.com/
>
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------