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