| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/04/2007 14:53:22
|
giovanni_stiwes
JavaGuru
Membro desde: 20/04/2006 09:00:42
Mensagens: 236
Offline
|
Estou usando um monitor de memoria na minha aplicação e vejo os seguintes "problemas":
1 - O total de memoria mostrado pelo java é diferente da quantidade de memoria mostrada pelo processo java.exe.
2 - O Garbage coletor só está coletando, quando a memoria livre está quase no fim, e em algumas vezes ele da estouro de memoria.
3 - O tópico 2 (acima) só acontece se eu não chamar o System.gc() manualmente.
Se alguem tiver explicações eu agradeço.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/04/2007 14:58:16
|
maquiavelbona
JWizard
![[Avatar]](/images/avatar/24bea84d52e6a1f8025e313c2ffff50a.jpg)
Membro desde: 29/06/2006 09:06:51
Mensagens: 2447
Localização: São Paulo - SP
Offline
|
1- A discrepância é grande? Senão o que está mostrando é a memória disponível dentro do alocado do processo java.exe.
2 e 3- O garbage collector não tem obrigação de rodar em nenhum momento, ele não tem tempo para rodar e você não pode exigir que ele rode. Quando chamas System.gc(), você sugere que ele execute, pode executar ou não. E ele pode estar colentando os objetos só no fim da memória porque pode ser que os objetos não foram marcados ainda para a coleta, então o GC nem toca neles.
Até!
|
----------------------------------------------------------------
"Within a few years a simple and inexpensive device, readily carried about, will enable one to receive on land or sea the principal news, to hear a speech, a lecture, a song or play of a musical instrument, conveyed from any other region of the globe. "
Nikola Tesla - A means for furthering Peace (1905)
"Gedanken ohne Inhalt sind leer, Anschauungen ohne Begriffe sind blind."
Immanuel Kant - Kritik der reinen Vernunft (1781) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/04/2007 15:06:32
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Pode ser que você tenha de passar alguma opção para alterar o algoritmo usado pelo Garbage Collector.
Isso já é um pouco complicado e depende da versão do seu JDK, assim como o fornecedor (por exemplo, as opções para a JVM da Sun são diferentes das opções da IBM e da BEA).
Outra coisa: será que não estão sendo usados muitos objetos que implementam o método "finalize"? Se isso estiver ocorrendo, muitos deles só são limpos a cada 2 vezes que o garbage collector efetua uma "full garbage collection".
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/04/2007 17:53:56
|
giovanni_stiwes
JavaGuru
Membro desde: 20/04/2006 09:00:42
Mensagens: 236
Offline
|
maquiavelbona wrote:1- A discrepância é grande? Senão o que está mostrando é a memória disponível dentro do alocado do processo java.exe.
A discrepancia é variavel, quanto mais memoria alocada, maior a discrepancia.
Estou Usando Win XP e Sun Java 6.
Já que eu não posso controlar o GC como evitar o eutouro de memoria?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/04/2007 18:00:40
|
maquiavelbona
JWizard
![[Avatar]](/images/avatar/24bea84d52e6a1f8025e313c2ffff50a.jpg)
Membro desde: 29/06/2006 09:06:51
Mensagens: 2447
Localização: São Paulo - SP
Offline
|
Podes começar por aqui:
http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html
http://java.sun.com/javase/technologies/hotspot/index.jsp
Se estiver criando muitos objetos dentro de um loop, procure reaproveitá-los ou liberá-los quanto antes, utilize tipos menos complexos de dados, quando a thread estiver para estourar a memória, suspendê-la e deixar com o que garbage collector limpe o que ainda ficou. O melhor para tudo isso é um profiler, tem vários por aí com integração com as IDEs.
Até!
|
----------------------------------------------------------------
"Within a few years a simple and inexpensive device, readily carried about, will enable one to receive on land or sea the principal news, to hear a speech, a lecture, a song or play of a musical instrument, conveyed from any other region of the globe. "
Nikola Tesla - A means for furthering Peace (1905)
"Gedanken ohne Inhalt sind leer, Anschauungen ohne Begriffe sind blind."
Immanuel Kant - Kritik der reinen Vernunft (1781) |
|
|
 |
|
|