Até quando uma instancia fica na memória

9 respostas
R

Bom dia!!

Tenho uma dúvida com a instancia de classe.

Sempre que eu criar uma nova instancia de uma classe (new cliente(); por exemplo) isto ira ocupar espaso de memória, correto?

Até quando esta classe fica na memória?

Vamos dizer que eu tenha um jframe para cadastro de cliente, e este tenha uma classe controle com os metodos de insert,delete, update para efetuar o acesso ao banco. Sendo assim, toda vez que o usuario clicar no botão Gravar eu irei criar uma nova instancia de controle para utilizar os metodos desta classe. Vamos dizer que o usuario entre cadastrar, alterar, deletar efetue uns 50 acessos. Eu terei 50 instancias da classe controle??

9 Respostas

davidbuzatto

http://www.guj.com.br/articles/28
http://javafree.uol.com.br/artigo/1386/Garbage-Collection.html
http://www.linhadecodigo.com.br/Artigo.aspx?id=568


julianolandim

Eu não sei te dizer exatamente o tempo que fica na memória, mas porque ao invés de fica instanciando toda vez que o usuário clicar em algum botão você não instancia somente uma vez criando um atributo no escopo da sua classe (uma variável de ambiente ) ?

davidbuzatto

:shock: :shock: :shock:

d34d_d3v1l

Padrão de Projeto Singleton x]

prog.tiago

Boa noite,

Sempre que eu criar uma nova instancia de uma classe (new cliente(); por exemplo) isto ira ocupar espaso de memória, correto?

Até quando esta classe fica na memória?

Até o momento em que o Garbage Colector passar e levar essa instância. Uma instância fica vulnerável a ser coletada pelo GC a partir do momento que ela não é mais referenciada. De forma simplificada é isso:

Você cria

Universidade u1=new Universidade();
u1.setNome("Metodista");

Universidade u2=new Universidade();
u2.setNome("Católica");

Você tem uma instância da classe Universidade atribuída a u1 com a propriedade nome setada como “Metodista”, da mesma forma como tem uma outra instância com a propriedade nome setada como “Católica”. São dois objetos. Os dois continuarão ocupando espaço na memória até q um belo dia vc pode fazer isso:

u1=null;

Ao fazer isso perceba que o objeto atribuído inicialmente à u1 com o valor de nome setado como “Metodista” continua existindo, mas ele não é mais “alcançável” pelo sistema, pois não há variável q a referencia. Portanto ela é uma ótima candidata a ser coletada pelo Garbage Colector.

Espero ter ajudado de alguma forma.

Abraço

prog.tiago

Não havia lido esse trecho… :-o

Para esse caso, utilize o padrão singleton como nossos companheiros indicaram.

Abraços

davidbuzatto

Não havia lido esse trecho… :-o

Para esse caso, utilize o padrão singleton como nossos companheiros indicaram.

Abraços
Eu não indiquei nada não hein… E acho que o d34d_d3v1l tbm não.

prog.tiago

Padrão de Projeto Singleton x]

Na verdade foi apenas uma indicação.

++

R

Ok, obrigado! Ja deu para ter uma ideia legal.

Criado 30 de outubro de 2011
Ultima resposta 3 de nov. de 2011
Respostas 9
Participantes 5