Depois de mta pesquisa … e testes, cheguei a conclusao que java é um poquim + pesado que outro programa compilado em Delphi, C# ou outra coisa q gera codigo nativo …
Porem acho q com um poukinho de logica da pra deixa ele usando um pouco menos de memoria
ai que entra o lance …
eu tenho uma class MainCtrl … que chama outras Ctrl’s , que gerenciam as View
uma tentativa de fazer MVC em Swing
ai eu chamo a View
setGerenciaView((GerenciaView) Class.forName(getGerenciaViewClass()).newInstance());
getMainView().getPnlContent().add(getGerenciaView());
getGerenciaView().initShowGUI(this);
na criacao dessa view eu seto o DefaultCloseOperation
setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
mas qdo eu crio ele de novo … essa classe nao é “liberada”
eu to usando o YourKit Profiler pra visualizar as classes em memoria
ai, eu pensei … deve ser que ainda esta sendo usada por alguem …
pensando nisso eu fiz o seguinte …
if (getGerenciaView() != null)
{
if (getGerenciaView().isVisible())
{
getGerenciaView().toFront();
return;
}
else
{
getMainView().getPnlContent().remove(getGerenciaView());
setGerenciaView(null);
}
}
setGerenciaView((GerenciaView) Class.forName(getGerenciaViewClass()).newInstance());
getMainView().getPnlContent().add(getGerenciaView());
getGerenciaView().initShowGUI(this);
resumindo … continua a classes la, e num some … mesmo eu removendo ela do Desktop, e setando null pra class Ctrl , q cria ela …
tem como eu descobrir … quem é q ainda esta usando essa class??? pra que o GC limpe ela da memoria?
ou intaum … se alguem ai tiver uma solucao pra app Swing MDI … estou aberto a ideias
