Senhores, tenho uma aplicação que conforme o usuario vai utilizando a mesma vai consumindo memória da estação do usuário. Existe alguma forma de controlar ou monitor quais objetos estão sendo usados e não estão liberando memória?
[]s
Jupy
Senhores, tenho uma aplicação que conforme o usuario vai utilizando a mesma vai consumindo memória da estação do usuário. Existe alguma forma de controlar ou monitor quais objetos estão sendo usados e não estão liberando memória?
[]s
Jupy
Dá uma revisada para ver se você está alocando algum recurso e não o está liberando. Usa um profiler (o netbeans tem um muito bom).
Até mais!
Uma breve descrição da sua plicação ajudaria a falar com mais detalhes, mas vamos lá…
1-Evite realizar muitas operações com objetos do tipo String, pois String é imutável, ou seja se vc codifica algo coo abaixo:
String s = new String(“teste”);
s = s+“teste”;
vc está criando outro objeto do tipo string na memória e apontando o tipo reference s para oo novo objeto…
2-existe um comando que sugere à JVM a rodar o garbagge collector. Ou seja, inndica para ele er executado pelo sistema operacional, mas o sistema operacional é que realmente irá determinar se ele vai rodar ou não.
3-Se você está rodando uma aplicação JEE existe um programa open source chamado probe, que monitora algumas coisas básicas para vc (inclusive o uso de memória da JVM).
Precisaria de mais detalhes para ter ajudar de uma forma mais concisa, mas aí estão minhas sugestões.
espero ter ajudado.
<blockquote><div class="quote-author">thiagomont:</div>
…
1-Evite realizar muitas operações com objetos do tipo String, pois String é imutável, ou seja se vc codifica algo coo abaixo:
String s = new String(“teste”);
s = s+“teste”;
2-existe um comando que sugere à JVM a rodar o garbagge collector. Ou seja, inndica para ele er executado pelo sistema operacional, mas o sistema operacional é que realmente irá determinar se ele vai rodar ou não.
3-Se você está rodando uma aplicação JEE existe um programa open source chamado probe, que monitora algumas coisas básicas para vc (inclusive o uso de memória da JVM).
…
1 - Creio que não seja o problema… Tenho uma aplicação que usa massivamente Strings e não dá nenhum problema.
2 - Não é o sistema operacional quem determina se o gc vai executar, e sim a própria máquina virtual.
3 - Se for uma aplicação JEE a máquina do usuário não ficaria necessariamente sobrecarregada… Mas sua sugestão do probe é muito boa…
É o sistema operacional sim que determina quando a thread vai rodar. O que acontece é que quando vc cloca no seu código “System.gc();” a JVM indica ao sistema operacional que a thead pode começar a ser executada, mas como toda thread entra no estado de ready. Só o sistema operacional que indica se a thread será promovida para o estado de running.
Em relação ao probe, quis dizer para instalar o probe no servidor web para verificar o consumo de memória do servidor, blz?
OBS: davidbuzatto, vc conhece alguma alternativa ao probe?
Brigadão pelas dicas pessoal. Eu consegui resolver o problema fazendo um upgrade no Explorer, pois a versão atual não estava liberando objetos. Eu percebi isso quando vi que os usuários saiam da aplicação e o ambiente continuava lento, então visualizando os processo vi que ficava um iexplorer consumindo muita memória.
Após o upgrade isso foi resolvido.