Aplicação java

6 respostas
paulohbmetal

E aí galera blz?Bom eu estou fazendo uma aplicação em Swing e gostaria de uma ajuda (ou até exemplos).É o seguinte: esta aplicação está ficando bem complexa(vamos dizer assim), com isso o que tenho em dificuldade?O uso de memória…Bom a questão é que minha aplicação chega a dar picos de 35 MB de memória, e ainda tenho muita coisa a fazer…Até aí dá pra aguentar mas o problema é que (eu acho) limpo todas as referências para os objetos (Frames, Internal Frame e etc…) e o nosso amigo Garbage collector não aciona (mesmo forçando a barra com o System.gc(), sei ele não entra em na ação na hora em que desejo).Sou programador C e estou acostumado a liberar memória no “braço”.Mas no momento(últimos dois anos) estou me dedicando mais a Java…Conclusão: Socorro!!! :lol:

6 Respostas

V

Tente mudar para SWT, a sua aplicação ficará bem mais leve com certeza. Caso você já tenha usado o eclipse, sabe do que eu estou falando.

dukejeffrie

Tente arrumar o seu código, a sua aplicação vai ficar mais leve com ainda mais certeza. Eu chutaria vc tá usando mais memória do que deveria. Faça uma busca por todos os “new”, veja se vc não tá criando objetos à toa. Veja se vc tá dando ao GC oportunidade de limpar o lixo (por exemplo, soltando as referëncias).

Procure também por news ocultos:

String tmp = "<bode>";
for (...) {
  tmp += it.next();
}
tmp += "</bode>";

Substitua pro StringBuffer.

Existem ainda profilers que podem te mostrar onde seu programa tá alocando mais memória, e inclusive dar dicas.

E podemos conversar de Swing no fórum de Swing. Por exemplo, se vc tá instanciando um componente Swing (JTable e JList são os mais comuns) mais de uma vez, posso apostar com vc que tem um jeito que usa menos memória de fazer a mesma coisa (com ganhos na performance percebida!)

Antes que venham os flamers, não tô metendo o pau no paulohbmetal, nem no código dele. Quer dizer, no código, tô, mas é construtivo! :mrgreen:

[]s

paulohbmetal

Bom, não sei quanto a vc(dukejeffrie) mas só falo de um código ou qualquer outra coisa, quando o(a) vejo…E enquanto a “objetos a toa”, pode ficar tranquilo que não estou usando não.Tenho algumas JTables em minha aplicação sim, que usam renderers e/ou editores e reutilizo todos os objetos contidos nelas para que não tenha duplicação.Já pensei em usar swt, andei até dando uma olhada em swingwt…Mas estou desenvolvendo minha aplicação no NetBeans e para mim portar esta aplicação para swt ficaria meio complicado pois a mesma já está em um estágio bem avançado.Quando falo em aplicação, não digo uma janelinha com duas JTables e etc…digo uma aplicação MDI completa, com vários InternalFrames e classes/objetos proprietários.Bom, tenho poucas mensagens no fórum mas não sou tão novo assim em Java…Se alguém puder me dar umas dicas, agradeço… :slight_smile:

Luca

Olá

O Duke tentou ajudar indo direto nos problemas que normalmente costumam ocorrer e ainda deu uma ótima dica que é a de usar profilers.

Já eu vou por outro lado e não vejo porque do susto da aplicação usar 35 Mb. Se ela está bem feita sem memory leaks e coisa e tal, então não é o fato do crescimento da aplicação que vai aumentar o consumo de memória. Uma aplicação swing pode ter mais de 100 telas e não consumir muito mais do que uma outra de apenas 3 telas. Mesmo que uma ou outra tela seja um pouco mais complexa acredito que quando uma tela está em uso as outras não devem estar instanciadas. Nunca ficam vivos tantos objetos assim.

Trabalhei até bem pouco tempo com uma aplicação com mais de 1000 classes, mais de 100 telas e o consumo de memória não era problema apesar de usar XML. Ela rodava sem problemas em apenas 128Kb que é o padrão adotado na produção.

Siga as dicas do Duke e as boas práticas de programação do tipo das descritas em http://www.javaperformancetuning.com/tips/index.shtml. Acredite e confie.

[]s
Luca

paulohbmetal

Valeu velho!!Este site sim, será muito útil… :lol:

A Paz!!
ozielneto

Por mais que voce se esforce, e otimize sua App. A JVM rodando uma App SWING ou SWT vai ocupar grandes espacos de Heap Memory.

Boa sorte…

Criado 20 de janeiro de 2004
Ultima resposta 20 de jan. de 2004
Respostas 6
Participantes 5