[java-list] Problema para liberar memória-com os arquivos

2000-11-07 Por tôpico Marcos Ibuki



   Oi pessoal.

   Após mtas noites mal dormidas, parece que chegamos
ao centro do problema.

   Nosso software recebe dados (mtos dados !!) de um
banco e aparentemente esses dados estão superlotando o
sistema.

   Parece que a cada vez que os dados são recebidos, a
query anterior fica retida no sistema, ou seja, uma
referência para o objeto recebido é mantida, o que faz
com que o garbage collector não retire o obj.

   Estou mandando um 'demo' do problema. Preciso
entender porque o objeto fica retido na memória e como
posso tirá-lo. Nesta situação, o garbage collector não
está sendo eficiente ...

obs: no demo : 

- writeObjs.java: cria um arquivo q vai ser lido por  
readObj.java - tem que rodar uma vez para criar o
arquivo.

- readObjs.java: é o 'pepino' . é rodar e ver o efeito

   Ambos os arquivos tem alguns comentários. Eles são
simples e servem para ver que o consumo de memória
aumenta.

   Conto com a ajuda de vcs.

   Obrigado.

   MYI


__
Do You Yahoo!?
Thousands of Stores.  Millions of Products.  All in one Place.
http://shopping.yahoo.com/
 writeObjs.java
 readObjs.java

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


Re: [java-list] Problema para liberar memória.

2000-10-26 Por tôpico Luiz Fernando

Em cada iteracao você realmente precisa criar um novo objeto vector ? O que
deve estar sobrecarregando a memoria é isto...
ps.: O System.gc() não garante que vai ser chamado o Garbage Collector, na
realidade ele "sugere"

Luiz Fernando Corrêa
_
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
- Original Message -
From: Marcos Ibuki <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Friday, October 20, 2000 9:08 PM
Subject: [java-list] 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 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?
>
>   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]
> -


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




Re: [java-list] Problema para liberar memória.

2000-10-25 Por tôpico Gilleanes T. A. Guedes

Talvez a declaracao dentro de i dentro do for seja uma das causas. Declare i fora do 
for, que talvez fique um pouco mais rapido.

Gilleanes.

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




[java-list] Problema para liberar memória.

2000-10-24 Por tôpico Marcos Ibuki


  Oi pessoal.

  Estou com um problema de performance. Por exemplo,
declaro uma variável desta forma:

  for (int i=0;ihttp://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] 
-




RE: [java-list] Problema para liberar memória.

2000-10-23 Por tôpico Rogerio Rangel

Marcos,

Em primeiro lugar, lembre-se que System.gc() nao forca o garbage collector,
e sim o "induz" a ser executado. Teoricamente, o trecho de codigo esta'
correto, no entanto voce pode torna-lo mais eficiente:

1. Voce esta' inicializando o vector com o tamanho padrao. Isso e' caro,
pois ele vai ter que se redimensionar dinamicamente para suprir o espaco
requerido pelo seu laco. Tente inicializar o vector com aproximadamente o
tamanho de elementos a serem armazenados (i.e. numero de iteracoes do laco,
sei la'...).

2. Em vez de apontar o vector para null, utilize o metodo
vect.removeAllElements(), que apaga os elementos e mantem o tamanho atual do
mesmo.  Lembre-se que criacao de objetos e' uma tarefa muito cara em java.

3. Para otimizar mais ainda, instancie o vetor fora do laco for, apenas uma
vez, e fique limpando o mesmo a cada fim de iteracao.

OK ?

O que deve estar ocorrendo e' que o garbage collector nao deve estar tendo
tempo para se executar, uma vez que se outro processo esta' sendo executado
com mais prioridade, o mesmo nao o interrompera'. Para se assegurar que o
garbage collector esta' trabalhando, utilize o parametro -verbosegc na
execucao do seu programa.


Espero ter ajudado.

[]'s

Rogerio







> -Original Message-
> From: Marcos Ibuki [mailto:[EMAIL PROTECTED]]
> Sent: sexta-feira, 20 de outubro de 2000 20:08
> To: [EMAIL PROTECTED]; [EMAIL PROTECTED]
> Subject: [java-list] Problema para liberar memsria.
>
>
>
>   Oi pessoal.
>
>   Estou com um problema de performance. Por exemplo,
> declaro uma variavel desta forma:
>
>   for (int i=0;i Vector vect = new Vector();
> ...
> vect = null;
> ...
>   }
>   Aparentemente esta area do programa esta gerando um
> consumo muito alto de memsria, uma vez que "max"
> interagues acontecem e "vect" i um vetor com muitas
> posigues (muitas mesmo).
>
>   Eu pensei (e ainda penso) que atribuindo "null" `
> variavel ocorria uma liberagco da memsria alocada para
> aquela variavel, de forma que o garbage collector se
> encarregaria do resto.
>
>   Mesmo forgando o garbage collector com System.gc();
> o consumo de memsria continuou a aumentar, a cada vez
> que o csdigo acima era executado
>
>   Alguim poderia por favor me esclarecer esta questco?
>
>   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 Usuarios Java da Sucesu-SP
> dzvidas 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]
> -
>


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