Bom gente, no meio do desenvolvimento de um projeto, me surgiu uma dúvida. Como é que eu sei que um determinado objeto é realmente o que eu quero, e como eu faço para destruir o objeto na unha em vez de o garbage colector fazer isso para mim?(Isso é possível?) E como é a gerencia de objetos do tomcat, ele tem isso?
Pra saber sobre o objeto use o operador “instanceof”
Por que você quer destruir um objeto ao inves de deixar o gc fazer esta tarefa?
MarcioCasteloBranco
Outro ponto importante a respeito do garbage collector é que, como ele é controlado pela JVM, não é possível forçar a sua execução via programação. O máximo que pode ser feito é a chamada do método System.gc() (ou Runtime.getRuntime().gc()). Este método notifica a JVM que a aplicação gostaria que o garbage collector fosse executado, mas não garante que ele realmente será executado no momento desejado.
O método finalize
A classe Object do Java possui um método chamado finalize(), que pode ser sobrescrito pelas classes que herdam de Object (isto é, qualquer classe). Quando o garbage collector decide que determinado objeto será destruído por não ser mais referenciado, ele chama o método finalize() no objeto logo antes de destruí-lo.
Apesar do método finalize() ser uma chance que o programador tem para liberar recursos associados ao objeto no momento em que ele será destruído, sobrescrever o finalize() não é recomendado em nenhuma situação. O motivo é simples: como não existe garantia que o objeto será destruído, também não existe garantia que o finalize() será executado. A própria Sun não recomenda sobrescrever o método finalize(). A liberação de recursos pode ser feita de outras formas, como utilização de blocos try/catch/finally e/ou criação de métodos específicos para este fim (método close(), por exemplo).
Apenas seta null para seus objetos quando não sera mais utilizado, apenas para vm quando achar necessário limpar a referência da memória.
Sobre destruir um objeto na unha isso é muito utilizado em linguagens que não são interpretada como Delphi e C.
Como java roda em cima de uma maquina virtual ela faz essa parte pra voce
discorpio
Boa noite a todos.
Concordo com os amigos MarcioCasteloBranco e Leonardobhbr.
A melhor maneira de voce eliminar um objeto da memória é atribuir “null” a sua instância e deixar que Gabage Collector faça o resto, afinal, o GC foi criado exatamente para isto, para que não precisassemos ficar se importando quais os objetos deveriamos eliminar.
Outros conceitos sobre instâncias de objetos, e que muita gente pensa que o objeto em si é armazenado nela, quando na verdade o que é armazenado na instância é o endereço de memória onde o objeto foi alocado, funcionando como uma espécie de ponteiro. Na linguagem Object Pascal do Delphi tinhamos além de atribuir o valor “nil” (isto mesmo, é nil e não null), tinhamos também que destruir o objeto com o método Destroy ou free, e e corriamos o risco de destruir o objeto sem limpar a instância, ou vice versa e muita das vezes isto era um transtorno.
Garbage Collector veio justamente para resolver isto, limpando da memória todos os objetos cujas as intâncias são nulas.