Pessoal,
Estou de fato com uma pulga atrás da orelha com esse assunto. Eu tenho uma aplicação desktop em Java utilizando componentes swing, essa aplicação tem umas 3 ou 4 threads que, de tempo em tempo faz chamadas a um webservice, bom isso é apenas para contextualizar a situação, de fato podemos considerar como uma aplicação simples.
Essa minha aplicação consome em média 35mb de memória, eu ( e meu cliente ) achamos esse consumo muito alto e eu preciso de qualquer forma diminuir esse uso, a aplicação deveria rodar lindamente com menos de 15mb.
Após dezenas de otimizações e refactoring no código fonte do sistema eu consegui uma pequena melhora, algo em torno de 30, 33mb…
Então, após pensar “Meu código java é um lixo”, resolvi criar um simples projeto com apenas um jframe ( sem nenhum componente ), e após colocar essa aplicação para rodar tive a surpresa, esta aplicação teste com apenas um jframe consumia 15mb de memória…
Por curiosidade, estava no momento com o IReport aberto e resolvi verificar qual era o uso de memória dele. E o que constatei foi que o IReport aberto com 2 relatórios em edição consumia MENOS DE 3MB DE MEMÓRIA! SIM 3mb ( três megabytes ).
Agora vem a pergunta: Como isso é possivel? Porque minha aplicação Java de teste com apenas 1 Jframe consumia 15mb e o IReport com dezenas de compoentes e 2 relatórios abertos consome tão pouco? 3mb…???
No momento estou fazendo vários testes com parâmetros para definir o comportamento do coletor de lixo da JVM, mas pelo que vi os ganhos não serão tão expressivos como eu gostaria.
Fica ai meu relato e minha dúvida, espero que todos possam contribuir e quem sabe chegaremos aqui há em uma solução para otimizações de aplicações java Desktop no que diz respeito a uso de memória.
Abraços e até logo.
