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