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

Responder a