Reduzir javaw.exe durante execução

1 resposta
A

Estou fazendo um programa java que precisa de muito processamento e preciso reduzir o uso de memória do javaw.exe.

Dentro da classe main, eu crio várias vezes um objeto de uma classe que executa o sistema de acordo com certa configuração.

Sempre passo para a próxima configuração, eu não posso encerrar a execução da primeira configuração com o comando System.exit(0), pois isso pararia a execução. Assim, eu recrio o objeto da classe com as novas configurações e executo ele, como se fosse assim:

public static void main(String[] args){
   Objeto obj = new Objeto(<configuracoes do tipo 1>);
   obj = new Objeto(<configuracoes do tipo 2>);
}

O que acontece é que o uso de memória do javaw.exe sempre aumenta… pq isso acontece mesmo eu recriando o objeto? Há uma forma de evitar este aumento me uso de memória ? Tentei “System.gc();” entre cada configuração, mas não deu certo.

Obrigado!

1 Resposta

mmilanez

Olá,

Problemas de desempenho são complicados de se solucionar. Infelizmente, não existe nenhum hint mágico do tipo: java.exe -resolva-meus-gargalos . Passei por muitos problemas de desempenho também e, percebi que a forma mais efetiva de corrigir problemas assim, é analisando o comportamento da aplicação por um profiler.

Toda VM já vem um com analisador de memória básico, o Visual VM (/bin/jvisualvm) que lhe ajuda a identificar qual área da memória está sofrendo com os sintomas que você tem. Suponho que você tenha algum conhecimento das divisões da área de memória que o modelo da JVM usa, portanto, seus problemas podem eventualmente ter encontrado uma solução apenas por essas análise inicial.

Não encontrando nenhum indício aí, sugiro usar o jProfiler (http://www.ej-technologies.com/products/jprofiler/overview.html) por exemplo. Tive uma ótima experiência com ele, em um problema complicadíssimo recentemente.

Bom é isso, desculpe se não ajudei o quanto você esperava.

Marcus

Criado 6 de agosto de 2012
Ultima resposta 6 de ago. de 2012
Respostas 1
Participantes 2