Gerenciamento de Memoria

Boa noite pessoal.

Minha duvida e sobre o gerenciamento de memoria do java. Eu sei que o garbage collection e o reponsavel por liberar objetos da memoria, e que para isso um objeto não pode ter nenhum referencia. Ok, vou explicar minha situação.

Estou desenvolvendo um sistema, padrão mvc, onde os formularios são gerenciados pelas classes de controle.

tenho uma classe principal do pacote controle, que chama o formulário principal. Nesta classe do pacote controle, registro os ouvindo dos botões do menu, que esta no formulário. Ou seja, meu formulario não possui codigo algum, apenas os componente que faço a captura na classe controle.

nesta classe principal, faço a criação de um objeto Cidade. No construtor deste objeto ira ser criado o formulário de Cidade.

Minha duvida é como faço para liberar este objeto Cidade da memoria?
da maneira que esta , toda vez que o usuario clicar o menu Cidade, sera criado um outro objeto , e assim vai. Como liberar esse objeto para o garbage collection?

se o usuario fechar a tela de cidade e clicar novamente no menu cidade. neste instante sera criado outro objeto, sendo que o anterior ainda estava na memoria.

Eu sei que definir uma referencia como null, libera o objeto para o coletor de lixo, mas não posso fazer isso, porque o objeto deve ficar ativo para ouvir as ações dos botões que o usuário clica no form cidade.

Como posso resolver isso?

zetsu,

Acredito que seu cenário não seja um caso a preocupar.

Porem, via de regra: construa classes pequenas, coesas, que possuam uma única responsabilidade e que tenham vida curta. Trabalhando assim, o VM vai gostar de vc e de sua criação.

Você pode acompanhar o trabalho do GC, subindo sua VM assim com o seguinte comando:

Também você pode sugerir à VM que execute o GC (mas não é garantido) assim:

Caso goste de gerenciamento de memória, vc pode aprofundar os estudos em GC, é muito iteressante. As VMs podem usar várias abordagens(algoritmos) para otmização de memória, que podem fazer muita diferença dependendo do design de sua app.