Galera tenho um while(true) em uma das minhas aplicações e dentro dele não crio nenhum objeto apenas seto milhares de coisas quando chamo o gerenciador de tarefas do windows percebo que a minha aplicação ocupa pouca memória inicialmente e vai crescendo até dar um estouro de memória como eu faço para ela ser estável? não ficar aumentando sem parar??? valeu…
Memória que não pára de aumentar
15 Respostas
põe o código aí né… :?
Se você define milhares de coisas, essas milhares de coisas precisam ser guardadas em algum lugar, concorda? E esse lugar, neste caso, é a memória.
E cuidado com isso de que você não cria objetos…ao fazer um simples String b = a + “b”, você está criando dois objetos ao invés de um (que seria o pensamento inicial).
Talvez seja o caso de analisar sua aplicação e ver se está fazendo a coisa da forma correta.
Mas antes de tudo: quanta memória tem disponível?
Como eu disse no outro post, que você inclusive colocou seu código.
- Refatore o seu código para que ele fique mais claro;
- Baixe o Netbeans e o profiler do Netbeans, e veja que objetos estão sendo criados;
- A culpa não é do comando while (true), mas sim do que tem dentro do bloco while.
while (true) {
synchronized(this) {
try {
this.wait(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
Array.clear();
Array.add((item1= jopc.synchReadItem(group, item1)).toString());
Array.add((item2 = jopc.synchReadItem(group, item2)).toString());
Array.add((item3 = jopc.synchReadItem(group, item3)).toString());
Array.add((item4 = jopc.synchReadItem(group, item4)).toString());
Array.add((item5 = jopc.synchReadItem(group, item5)).toString());
Array.add((item6 = jopc.synchReadItem(group, item6)).toString());
Array.add((item7 = jopc.synchReadItem(group, item7)).toString());
Array.add((item8 = jopc.synchReadItem(group, item8)).toString());
Array.add((item9 = jopc.synchReadItem(group, item9)).toString());
Array.add((item10 = jopc.synchReadItem(group, item10)).toString());
Array.add((item11 = jopc.synchReadItem(group, item11)).toString());
Array.add((item12 = jopc.synchReadItem(group, item12)).toString());
Array.add((item13 = jopc.synchReadItem(group, item13)).toString());
Array.add((item14 = jopc.synchReadItem(group, item14)).toString());
Array.add((item15 = jopc.synchReadItem(group, item15)).toString());
Array.add((item16 = jopc.synchReadItem(group, item16)).toString());
Array.add((item17 = jopc.synchReadItem(group, item17)).toString());
Array.add((item18 = jopc.synchReadItem(group, item18)).toString());
Array.add((item19 = jopc.synchReadItem(group, item19)).toString());
Array.add((item20 = jopc.synchReadItem(group, item20)).toString());
Array.add((item21 = jopc.synchReadItem(group, item21)).toString());
Array.add((item22 = jopc.synchReadItem(group, item22)).toString());
Array.add((item23 = jopc.synchReadItem(group, item23)).toString());
Array.add((item24 = jopc.synchReadItem(group, item24)).toString());
Array.add((item25 = jopc.synchReadItem(group, item25)).toString());
Array.add((item26 = jopc.synchReadItem(group, item26)).toString());
Array.add((item27 = jopc.synchReadItem(group, item27)).toString());
Array.add((item28 = jopc.synchReadItem(group, item28)).toString());
Array.add((item29 = jopc.synchReadItem(group, item29)).toString());
Array.add((item30 = jopc.synchReadItem(group, item30)).toString());
Array.add((item31 = jopc.synchReadItem(group, item31)).toString());
Array.add((item32 = jopc.synchReadItem(group, item32)).toString());
Array.add((item33 = jopc.synchReadItem(group, item33)).toString());
Array.add((item34 = jopc.synchReadItem(group, item34)).toString());
Array.add((item35 = jopc.synchReadItem(group, item35)).toString());
Array.add((item36 = jopc.synchReadItem(group, item36)).toString());
Array.add((item37 = jopc.synchReadItem(group, item37)).toString());
Array.add((item38 = jopc.synchReadItem(group, item38)).toString());
Array.add((item39 = jopc.synchReadItem(group, item39)).toString());
Array.add((item40 = jopc.synchReadItem(group, item40)).toString());
Array.add((item41 = jopc.synchReadItem(group, item41)).toString());
Array.add((item42 = jopc.synchReadItem(group, item42)).toString());
Array.add((item43 = jopc.synchReadItem(group, item43)).toString());
Array.add((item44 = jopc.synchReadItem(group, item44)).toString());
Array.add((item45 = jopc.synchReadItem(group, item45)).toString());
Array.add((item46 = jopc.synchReadItem(group, item46)).toString());
Array.add((item47 = jopc.synchReadItem(group, item47)).toString());
Array.add((item48 = jopc.synchReadItem(group, item48)).toString());
Array.add((item49 = jopc.synchReadItem(group, item49)).toString());
Array.add((item50 = jopc.synchReadItem(group, item50)).toString());
Array.add((item51 = jopc.synchReadItem(group, item51)).toString());
Array.add((item52 = jopc.synchReadItem(group, item52)).toString());
Array.add((item53 = jopc.synchReadItem(group, item53)).toString());
Array.add((item54 = jopc.synchReadItem(group, item54)).toString());
Array.add((item55 = jopc.synchReadItem(group, item55)).toString());
Array.add((item56 = jopc.synchReadItem(group, item56)).toString());
Array.add((item57 = jopc.synchReadItem(group, item57)).toString());
Array.add((item58 = jopc.synchReadItem(group, item58)).toString());
Array.add((item59 = jopc.synchReadItem(group, item59)).toString());
Array.add((item60 = jopc.synchReadItem(group, item60)).toString());
Array.add((item61 = jopc.synchReadItem(group, item61)).toString());
Array.add((item62 = jopc.synchReadItem(group, item62)).toString());
Array.add((item63 = jopc.synchReadItem(group, item63)).toString());
Array.add((item64 = jopc.synchReadItem(group, item64)).toString());
Array.add((item65 = jopc.synchReadItem(group, item65)).toString());
Array.add((item66 = jopc.synchReadItem(group, item66)).toString());
Array.add((item67 = jopc.synchReadItem(group, item67)).toString());
Array.add((item68 = jopc.synchReadItem(group, item68)).toString());
Array.add((item69 = jopc.synchReadItem(group, item69)).toString());
Array.add((item70 = jopc.synchReadItem(group, item70)).toString());
Array.add((item71=jopc.synchReadItem(group, item71)).toString());
Array.add((item72=jopc.synchReadItem(group, item72)).toString());
acompanhamentoGeral.TagAPROVADAS.setText(Array.get(10).substring(0, Array.get(10).indexOf(".")));
acompanhamentoGeral.TagACUMULO.setText(Array.get(9).substring(0, Array.get(9).indexOf(".")));
acompanhamentoGeral.TagAPRODUZIR.setText(Array.get(8).substring(0, Array.get(8).indexOf(".")));
acompanhamentoGeral.TagPECASMIN.setText(Array.get(7).substring(0, Array.get(7).indexOf(".")));
acompanhamentoGeral.TagREJEITADAS.setText(Array.get(6).substring(0, Array.get(6).indexOf(".")));
acompanhamentoGeral.TagRESTANTES.setText(Array.get(11).substring(0, Array.get(11).indexOf(".")));
if (!medicoesGeral.CampoMAXENGATE.hasFocus())
medicoesGeral.CampoMAXENGATE.setText(Array.get(5));
if (!medicoesGeral.CampoMINENGATE.hasFocus())
medicoesGeral.CampoMINENGATE.setText(Array.get(4));
if (!medicoesGeral.CampoMAXTRACIONAMENTO.hasFocus())
medicoesGeral.CampoMAXTRACIONAMENTO.setText(Array.get(3));
if (!medicoesGeral.CampoMINTRACIONAMENTO.hasFocus())
medicoesGeral.CampoMINTRACIONAMENTO.setText(Array.get(2));
if (!medicoesGeral.CampoMINDESENGATE.hasFocus())
medicoesGeral.CampoMINDESENGATE.setText(Array.get(0));
if (!medicoesGeral.CampoMAXDESENGATE.hasFocus())
medicoesGeral.CampoMAXDESENGATE.setText(Array.get(1));
medicoesGeral.TagFORCADEENGATE.setText(Array.get(19));
medicoesGeral.TagULTIMOTESTE.setText(Array.get(18));
medicoesGeral.TagTEMPO.setText(Array.get(17));
medicoesGeral.TagFORCADETRACAO.setText(Array.get(15));
medicoesGeral.TagTESTE.setText(Array.get(15));
medicoesGeral.TagDesengate.setText(Array.get(14));
medicoesGeral.TagULTIMOTESTE1.setText(Array.get(14));
medicoesGeral.TagTEMPO1.setText(Array.get(13));
medicoesGeral.TagAPERTODOBOTAO.setText(Array.get(12));
if (Array.get(20).equals("1.0"))
medicoesGeral.CheckEST2.setSelected(true);
else
medicoesGeral.CheckEST2.setSelected(false);
if (Array.get(21).equals("1.0"))
medicoesGeral.CheckEST3.setSelected(true);
else
medicoesGeral.CheckEST3.setSelected(false);
if (Array.get(22).equals("1.0"))
medicoesGeral.CheckEST4.setSelected(true);
else
medicoesGeral.CheckEST4.setSelected(false);
if (Array.get(23).equals("1.0"))
medicoesGeral.CheckEST5.setSelected(true);
else
medicoesGeral.CheckEST5.setSelected(false);
if (Array.get(24).equals("1.0"))
medicoesGeral.CheckEST6.setSelected(true);
else
medicoesGeral.CheckEST6.setSelected(false);
if (Array.get(25).equals("1.0"))
medicoesGeral.CheckEST7.setSelected(true);
else
medicoesGeral.CheckEST7.setSelected(false);
if (Array.get(26).equals("1.0"))
medicoesGeral.CheckEST8.setSelected(true);
else
medicoesGeral.CheckEST8.setSelected(false);
if (Array.get(27).equals("1.0")) {
medicoesGeral.BtnPRODUCAO.setSelected(false);
medicoesGeral.BtnPRODUCAO.setText("Produção");
medicoesGeral.CheckEST2.setEnabled(false);
medicoesGeral.CheckEST3.setEnabled(false);
medicoesGeral.CheckEST4.setEnabled(false);
medicoesGeral.CheckEST5.setEnabled(false);
medicoesGeral.CheckEST6.setEnabled(false);
medicoesGeral.CheckEST7.setEnabled(false);
medicoesGeral.CheckEST8.setEnabled(false);
} else {
medicoesGeral.BtnPRODUCAO.setSelected(true);
medicoesGeral.BtnPRODUCAO.setText("Ajuste");
medicoesGeral.CheckEST2.setEnabled(true);
medicoesGeral.CheckEST3.setEnabled(true);
medicoesGeral.CheckEST4.setEnabled(true);
medicoesGeral.CheckEST5.setEnabled(true);
medicoesGeral.CheckEST6.setEnabled(true);
medicoesGeral.CheckEST7.setEnabled(true);
medicoesGeral.CheckEST8.setEnabled(true);
}
if (!Array.get(28).equals("1.0")) {
Alarme = "Ar desligado";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Ar desligado";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(29).equals("1.0")) {
Alarme =
"Caixa de refugo com capacidade de armazenamento esgotada";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme =
"Caixa de refugo com capacidade de armazenamento esgotada";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(30).equals("1.0")) {
Alarme = "3 - Desengate bloqueado";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "3 - Desengate bloqueado";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(31).equals("1.0")) {
Alarme = "Alarme de emergência acionado";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Alarme de emergência acionado";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(32).equals("1.0")) {
Alarme = "Alarme de emergência da linha acionado";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Alarme de emergência da linha acionado";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(33).equals("1.0")) {
Alarme = "Alarme de engate bloqueado";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Alarme de engate bloqueado";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(34).equals("1.0")) {
Alarme = "6 - Falha na traçao (falso engate)";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "6 - Falha na traçao (falso engate)";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(35).equals("1.0")) {
Alarme = "2 - Falha na solda";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "2 - Falha na solda";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(36).equals("1.0")) {
Alarme = "Fim de producao";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Fim de producao";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(37).equals("1.0")) {
Alarme = "Fim de producao 20 pc";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Fim de producao 20 pc";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(38).equals("1.0")) {
Alarme = "Fim de producao 5 pc";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Fim de producao 5 pc";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(39).equals("1.0")) {
Alarme = "Forca da mola baixa";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Forca da mola baixa";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(40).equals("1.0")) {
Alarme = "Forca de tracao baixa";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Forca de tracao baixa";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(41).equals("1.0")) {
Alarme = "1 - Falha de Expulsão";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "1 - Falha de Expulsão";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(42).equals("1.0")) {
Alarme = "Alarme de forca de tracao alta";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Alarme de forca de tracao alta";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(43).equals("1.0")) {
Alarme = "Máquina em SETUP";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Máquina em SETUP";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(44).equals("1.0")) {
Alarme = "Alarme peca nao saiu do manipulador";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Alarme peca nao saiu do manipulador";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if ((!Array.get(45).equals("1.0")) | (!Array.get(46).equals("1.0")) |
(!Array.get(47).equals("1.0")) | (!Array.get(48).equals("1.0")) |
(!Array.get(49).equals("1.0"))) {
Alarme = "Alarme portas abertas";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Alarme portas abertas";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(50).equals("1.0")) {
Alarme = "Alarme de botao travado";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Alarme portas abertas";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(51).equals("1.0")) {
Alarme = "Alarme de desengate bloqueado";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Alarme de desengate bloqueado";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(52).equals("1.0")) {
Alarme = "4 - Engate bloqeuado";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "4 - Engate bloqeuado";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(53).equals("1.0")) {
Alarme = "Estacao 2 Fora de posicao inicial";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Estacao 2 Fora de posicao inicial";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(54).equals("1.0")) {
Alarme = "Estacao 3 Fora de posicao inicial";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Estacao 3 Fora de posicao inicial";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(55).equals("1.0")) {
Alarme = "Estacao 4 Fora de posicao inicial";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Estacao 4 Fora de posicao inicial";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(56).equals("1.0")) {
Alarme = "Estacao 5 Fora de posicao inicial";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Estacao 5 Fora de posicao inicial";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(57).equals("1.0")) {
Alarme = "Estacao 7 Fora de posicao inicial";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Estacao 7 Fora de posicao inicial";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(58).equals("1.0")) {
Alarme = "Falha na pressao da rede de ar comprimido";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Falha na pressao da rede de ar comprimido";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(59).equals("1.0")) {
Alarme = "Falha na saída de peca";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Falha na saída de peca";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(60).equals("1.0")) {
Alarme = "Falha no passo da mesa";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Falha no passo da mesa";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(61).equals("1.0")) {
Alarme = "Falta de peca est 2";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Falta de peca est 2";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(62).equals("1.0")) {
Alarme = "Falta de peca est 3";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Falta de peca est 3";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(63).equals("1.0")) {
Alarme = "Falta de peca est 4";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Falta de peca est 4";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(64).equals("1.0")) {
Alarme = "Falta de peca est 5";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Falta de peca est 5";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(65).equals("1.0")) {
Alarme = "5 - Desengate bloqueado sob traçao";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "5 - Desengate bloqueado sob traçao";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(66).equals("1.0")) {
Alarme = "Alarme de forca de desengate baixa";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Alarme de forca de desengate baixa";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(67).equals("1.0")) {
Alarme = "Alarme de forca de engate alta";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Alarme de forca de engate alta";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(68).equals("1.0")) {
Alarme = "Alarme de forca de engate baixa";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Alarme de forca de engate baixa";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(69).equals("1.0")) {
Alarme = "Passo da mesa nao completado";
model.removeElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
} else {
Alarme = "Passo da mesa nao completado";
model.removeElement(Alarme);
model.addElement(Alarme);
painelAlarme.ListaALARMES.setModel(model);
}
if (!Array.get(70).equals("1.0")) {
medicoesGeral.BtnPRODUCAO.setSelected(false);
medicoesGeral.BtnPRODUCAO.setText("Podução");
medicoesGeral.CheckEST2.setEnabled(false);
medicoesGeral.CheckEST3.setEnabled(false);
medicoesGeral.CheckEST4.setEnabled(false);
medicoesGeral.CheckEST5.setEnabled(false);
medicoesGeral.CheckEST6.setEnabled(false);
medicoesGeral.CheckEST7.setEnabled(false);
medicoesGeral.CheckEST8.setEnabled(false);
} else {
medicoesGeral.BtnPRODUCAO.setSelected(true);
medicoesGeral.BtnPRODUCAO.setText("Ajuste");
medicoesGeral.CheckEST2.setEnabled(true);
medicoesGeral.CheckEST3.setEnabled(true);
medicoesGeral.CheckEST4.setEnabled(true);
medicoesGeral.CheckEST5.setEnabled(true);
medicoesGeral.CheckEST6.setEnabled(true);
medicoesGeral.CheckEST7.setEnabled(true);
medicoesGeral.CheckEST8.setEnabled(true);
}
if (!medicoesGeral.BtnPRODUCAO.isSelected()) {
CriaOPC.escreveInt(Driver, "Setup_Operacao.Ajuste_Produc.Value", 0);
medicoesGeral.BtnPRODUCAO.setText("Podução");
medicoesGeral.BtnPRODUCAO.setSelected(false);
} else {
CriaOPC.escreveInt(Driver, "Setup_Operacao.Ajuste_Produc.Value", 1);
medicoesGeral.BtnPRODUCAO.setText("Ajuste");
medicoesGeral.BtnPRODUCAO.setSelected(true);
}
painelCabecalho.hora.setText(Array.get(71));
} catch (ComponentNotFoundException e1) {
e1.printStackTrace();
} catch (SynchWriteException e) {
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
}
A minha duvida e a seguinte o meu sistema nao deveria em um certo momento ficar estavel? ou seja nao ficar oculpando cada vez mais memoria o que acontece e que ele fica meio que crescendo a cada segundo almenta um pouco no gfim do dia o sistema ta ocupando mais de 100 megas de memoria eu nao sei o que fazer mais, ja tirei o loop infinito para ver ele fica paradinho nao oculpa nada alem do normal…e o pior e que nao to criando objetos dentro do while como podem ver apenas setando campos…
tem outra maneira sem ser while? Thread eu ouvi dizer mas nao tenho muito conhecimento podem me ajudar?
?
O que faz o método:
jopc.synchReadItem(group, item1)
Tem certeza que ele não cria nenhum objeto?
E o que é a variável group? Ela não está guardando nenhuma referência ao objeto criado?
Cara, se o sistema está ocupando cada vez mais memória, você está com absoluta certeza criando objetos.
Se você não consegue achar onde, siga as dicas que eu te dei, pois elas mostrarão à você que objeto está sendo criado. Já é a terceira vez que eu te explico como resolver os seu problema, mas parece que você simplesmente me ignorou.
PS: A palavra ocupando e aumentar não tem L!
Entao vinicios eu baixei o profiler e executei percebi que o meu programa cria muitos objetos do tipo int[] seriam inteiros obviamente certo? so que nao tenho tantos objetos deste tipo sendo criados no meu while(true) pode me ajudar?
Deixe rodando por um bom tempo e procure as classes que mais ocupam espaço.
Essas classes devem ter atributos que são do tipo int, por isso ele se repete tanto.
Achar memory leak não é uma tarefa trivial. Você precisa entender o código que você fez e vasculha-lo corretamente.
Infelizmente não dá para te ajudar mais do que isso. Agora é você precisa analisar os relatórios profiler e tentar achar o problema.
Mesmo que você não crie diretamente, algumas das classes que você usa pode estar criando esse objeto.
Vinicius quando eu arranco o que esta dentro do loop ele fica estavel ou seja fica ok, quando coloco ele volta o loop e exatamente aquele que mandei acima, vc me disse que talvez algum metodo que eu chame dentro deste while pode estar criando objetos do tipo , mas se um determinado objeto foi criado em um determinado metodo quando chegar ao fim da execução deste metodo vc concorda que o objeto sera destruido? ou nao?
teria algum outro meiio de repetir a minha aplicação diveersas vezes sem usar o while(true) uma vez eu vi um programa com duas classes no mesmo .java era algo do tipo sera que funfa pra mim? valeu.
-
Se você rodar o while uma só vez, os objetos que estão te causando problemas também só serão criados uma vez. E provavelmente você terá memória suficiente para eles e isso não será um problema;
-
Se o objeto for referenciado por alguém, ele não será deletado da memória, acabe o while ou não. Além do mais, com while true, seu método nunca termina.
Não tem mistério. Rode o profiler por um bom tempo (até próximo do erro ocorrer). Depois, veja que classe (não que tipo primitivo) está em primeiro lugar em consumo de memória. Depois, verifique quem está criando objetos dessa classe, e quem está referenciando essa classe.
Se for uma classe como FileInputStream ou FileOutputStream, ou classes de banco de dados, verifique também se todos os close() estão sendo dados corretamente.
Cara a classe que mais consome memoria e a que busca a cada 1 segundo um valor no qual ela chama um metodo native que e de acesso a uma dll nao sei o que fazer para otimizar, pois o metodo e nativo nao contem nada…
Ela está em primeiríssimo lugar? Ou está empatada com a em segundo?
Você rodou o profiler por bastante tempo? Se rodar por pouco, talvez não dê tempo da classe vilã da história aparecer.
E, se o método native não faz nada, para que você usa ele?
E que classe usa objetos dessa classse?
Vai investigando cara… alguma coisa cria objetos demais dessa classe… ou da classe que contém essa classe, e assim por diante.
Uma hora você acha quem é o vilão da história.
Cara ja tentei achar onde sao criados estes objetos mas nao encontro nao e possivel cara e coisa de doido isso kkkk