Melhorar performance Aplicação

2 respostas
B

Galera,

A classe principal de minha aplicação inicia instâncias de uma porrada de objetos (+ ou - umas 15 classes). Gostaria de saber se é correto eu atribuir null aos objetos (depois que não for usá-los mais) e chamar o GC, para melhorar a performance da aplicação. Sei que existem parâmetros de configuração da JVM que podem melhorar e muito a performance, mas no meu caso eu não gostaria de fazer isso, gostaria de manter o padrão de memória que a JVM usa.

Valeu!!!

2 Respostas

fabiozoroastro

Bruno, essa “porrada” de objetos, são só 15? Isso qualquer máquina hoje em dia faz com as mãos nas costas. Faz um for assim aí:

for(int i = 0 ; i < 100; i++){
System.out.println("Novo Objeto criado");
}

Se vc executar esse código, serão criados 100 objetos String. Mas a aplicação não perderá performance.
E sobre setar pra null, é aconselhável, mas isso não quer dizer que o GC irá instantaneamente coletar os objetos.
Outro detalhe, é que é impossível fazer com que o GC colete objetos não usados. Quem faz esse papel é a thread deamon da JVM.
Então, não adianta vc fazer o System.gc(). :slight_smile:

Abraço.

ViniGodoy

De que tipo de performance estamos falando? Velocidade? Uso de memória?

Bom, o primeiro passo é usar um profiler na sua aplicação. Meça o tempo de cada método e veja em que ponto da construção de seus objetos está o gargalo da sua aplicação. Geralmente o problema está concentrado em um só ponto e uma simples troca de algoritmo pode resolver.

Uma das coisas que você pode é usar lazy initialization em parte de seus objetos, e retirar espalhar o tempo dessa carga pela sua aplicação, normalmente em pontos imperceptíveis.

Mas… não adianta nada chutar o que fazer. Use o profiler primeiro, identifique o problema e daí sim, busque uma solução.

Tanto o Netbeans, quanto o Eclipse possuem ótimos profilers. Se você está compilando na mão, também pode usar o antigo (mas bem útil) EJP (Extensible Java Profiler).

Criado 29 de agosto de 2007
Ultima resposta 29 de ago. de 2007
Respostas 2
Participantes 3