Consumo elevado de memoria na estação do Usuario

5 respostas
jupysilva

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

5 Respostas

davidbuzatto

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!

T
Uma breve descrição da sua plicação ajudaria a falar com mais detalhes, mas vamos 

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.

davidbuzatto
<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…

T

É 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?

jupysilva

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.

Criado 25 de julho de 2007
Ultima resposta 10 de ago. de 2007
Respostas 5
Participantes 3