Problema de Performance

5 respostas
matheusssilva

Bem gente tenho um internalframe de cadastro com uma jtable, jlabels e alguns botões e textfields. Estou tendo problemas visiveis de perfromance em algumas funcionalidades desse internalframe. Uma é quando é clicado no botão novo, que tem como função limpar qualquer texto que esteja nos textfields, tb habilita-los e desabilitar alguns dos botões. A outra é quando é clicado no em cada linha da jtable e o evento do tipo ListSelectionEvent é disparado para pegar os dados que estão na List que representa os dados da jtable e mostra-los nos jtextfields.

O preblema é que esses dois processos (não é sempre) são executados um pouco lento. Por exemplo, o evento do botão novo que tem como função principal habilitar e limpar os textfields para um novo cadastro, esse processo de limpeza dos textfields é feita com uma pequena lentidão que se consegue perceber os textfields sendo limpos um por um. Acredito que leve um segundo ou pouco mais disso. O mesmo acontece no evento ListSelectionEvent adicionado a jtable, os dados são pegos de uma List que representa os dados da jtable e exibidos nos texfields, nesse processo tb se consegue perceber os textfields recebendo os valores um por um.

Isso não acontece sempre, a vezes que fica normal, ou seja, esses processos ficam instantaneos, não sendo possivel notar o processo sendo feito.

Descupem pelo excesso de código

Valeu gente

5 Respostas

ViniGodoy

Oi,
Coloquei seu código num anexo pois estava travando o tópico.

Bem, já tentou usar um profiler? Se não tentou, recomendo que comece por aí. O java já vem com o Visual VM, está dentro do diretório do SDK. Use-o:
https://visualvm.dev.java.net/

Coisas como as que vc falou não deveriam dar problema, nem se fossem 500 componentes.

E

Olhando seu código, vi duas coisas estranhas:
a) Normalmente quando você quer limpar um JTextField, você atribui a string vazia a ele ("") (embora a documentação indique que você possa até passar null para limpar).
b) Como é a classe “ListnerDocuments”? Deve ser ela que demora um tempão para processar na hora de você limpar os JTextFields.
(argh - pelo menos podia evitar comer a letra E, pois é “Listener”, não “Listner”, que parece um sobrenome alemão).

matheusssilva

Estranho passei meia hora mexendo nesse internalframe com o VisualJVM monitorando e ele não aprensentou o problema :roll:
Comecei achar que possa ser alguma autra aplicação que estava aberta que está roubando recursos. É possivel?

entanglement valeu pela observação do “Listner” já corrigi.

matheusssilva

Bem consegui monitorar com o VisualVM no momento que o problema aconteceu. Não sou familiarizado com ele, por isso não consegui identificar muita coisa. O que percebi foi que em uma segunda analise sem apresentar o problema o método run principal estava com um tempo de processamento menor do que a primeira analise quando o problema ocorreu.

Abaixo enviei o profile da analise, se os colegas mais experientes poderem dar uma olhada agradeço.

matheusssilva

Alguém ai ja teve uma perdazinha de performance ao usar beans binding? Sei não mas começo a achar ser problema com a minha VM instalada aqui que é 64bits, quando carrego um Frame equipado com beans binding ele demorar a abrir, quando abro um sem beans binding abre normalmente.

Criado 28 de julho de 2010
Ultima resposta 29 de jul. de 2010
Respostas 5
Participantes 3