Ola Andre,
O garbage collector pode ter algo a ver com isso, mas mas acho
que nao eh o caso.
Se a sua aplicacao esta travando por falta de memoria (voce
apenas supoe, certo?) voce _deveria_ receber um "OutOfMemoryError"
no momento da alocacao que falhasse. Pelo jeito isso nao ocorre.
Se for problema de memoria, voce deve estar mantendo referencias
para diversos objetos, e nunca libera essas referencias, e
portanto, o GC nunca podera retirar esses objetos da memoria (ja
que o seu programa esta "usando" esses objetos). Verifique
todos os possiveis locais na sua aplicacao onde voce guarda as
referencias. Uma observacao rapida: problemas com o garbage
collector nao sao resolvidos com o System.gc, mas sim com o
entendimento de quanta memoria seu aplicativo gasta e como!
Aparentemente (como coloquei acima), seu problema nao eh de memoria,
e nao deve tewr nada a ver com o GC. E se for esse o caso, existe algum
problema de logica no seu aplicativo. Voce pode estar com problemas de
sincronismo de threads, ou pode ser que voce esteja criando threads
indefinidamente, e dependendo como sao criados esses threads a sua
aplicacao podera ficar mais lenta. Eh possivel tambem que voce esteja
tendo problemas de deadlock e por isso a aplicacao trava sem nenhuma
mensagem de erro (dois threads esperam um ao outro, por exemplo).
Utilize um debug que mostre os threads que estao rodando, e acompanhe
a execussao da sua aplicacao. Verifique quando a aplicacao trava quais
threads estao esperando o que, e tente verificar se eh um deadlock.
Bruno.
> Date: Thu, 25 Mar 1999 05:55:47 -0800 (PST)
> From: Simone Freire <[EMAIL PROTECTED]>
> Subject: Garbage Collection
> To: [EMAIL PROTECTED]
>
> Saudacoes a todos.
> Tenho um problema interessante, que acredito se deve ao garbage
> collector.
> Disponho, em um aplicativo, de uma opcao que inicializa
> um JInternalFrame, o qual, por sua vez, em um processsamento
> relativamente longo, absorve dados de um arquivo-texto para um arquivo
> .mdb, via JDBC:ODBC.
> Mantenho, no rodape do JInternalFrame, um JProgressBar que me da ideia
> da evolucao do processamento. Ao final da absorcao do arquivo-texto, me
> disconecto do mdb, em um bloco finally, anulando as variaveis de
> instancia envolvidas. Toda a importacao ocorre em uma Thread, com
> prioridade minima.
> Quando repito o procedimento, o processamento demora mais para finalizar
> e assim sucessivamente, ateh que trava o aplicativo, deve ser por falta
> de memoria.
> Sei que o garbage collector, mesmo com System.gc(),
> nao eh invocado de imediato. Entao, qual a solucao para que nao ocorra a
> exaustao de memoria, consequentemente travando o aplicativo?
> Andre.
>
>
>
> _________________________________________________________
> Do You Yahoo!?
> Get your free @yahoo.com address at http://mail.yahoo.com
>
> * Para nao receber mais e-mails da lista, acesse
<http://www.sun.com.br:8080/guest/RemoteAvailableLists>, coloque seu e-mail,
escolha a lista <[EMAIL PROTECTED]> e de um <submit>.
Bruno.
______________________________________________________________________
Bruno Peres Ferreira de Souza Sun Microsystems
System Engineer - Java Technologist [EMAIL PROTECTED]
if I fail, if I succeed, at least I live as I believe
* Para nao receber mais e-mails da lista, acesse
<http://www.sun.com.br:8080/guest/RemoteAvailableLists>, coloque seu e-mail, escolha a
lista <[EMAIL PROTECTED]> e de um <submit>.