Matar Instância na força bruta  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
TiagoFoil
JavaGuru
[Avatar]

Membro desde: 22/02/2005 19:46:49
Mensagens: 205
Offline

Bom dia,

Eu estava precisando matar a instância de um objeto na força bruta. Sem, em hipótese alguma, depender do Garbage Colector. Pois quando passo null pra ele e chamo System.gc(); Ele continua lá. Li em algum lugar q o GC nem sempre irá finalizar uma instância q esteja com null só pq foi chamado.
Entao, queria saber se existe outra forma de finalizar totalmente um objeto e limpá-lo da memória em tempo de execussão. Existe???

Desde agradeço,

Tiago Duarte
[MSN] [ICQ]
diego2005
GUJ Master
[Avatar]

Membro desde: 17/08/2005 10:11:05
Mensagens: 1095
Offline

Acho que não é possível destruir um objeto explicitamente, só o GC pode fazer isso. E você NÃO pode forçar a execução do GC, você pode apenas fazer uma solicitação, o que não quer dizer que ele vai atendê-lo.

SCJP 1.4

Meu Currículo
seduardo
Thread.start()

Membro desde: 10/02/2003 18:33:21
Mensagens: 30
Localização: São Paulo/SP
Offline

Pela especificação do java, por meio natural não tem. Uma prática utilizada por vários programadores é criar um método que libere seus recursos, assim como o close(), destroy() ou release().
Assim você antes de passar null para o objeto, você chama um método para liberação de recursos. Como por exemplo:


Sérgio
[Email]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Chama o Chuck Norris que ele te resolve isso!

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

Quando você coloca null na referência o objeto continua em uso ou apenas na memória?

Seu objeto contém outros objetos? As referências deles também foram anuladas?

Dê uma estudada no funcionamento do GC que sempre é útil para todos nós.

[]s
Luca

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
TiagoFoil
JavaGuru
[Avatar]

Membro desde: 22/02/2005 19:46:49
Mensagens: 205
Offline

lol
Só o chuck norris pode resolver essa questão mesmo! hahaah! quando o objeto for de um tipo q nao tenha métodos para liberar recurso, q é o meu caso.
Bom, fiquei sabendo q o Chuck Norris nao usa Primary Key no banco dele, pois os registros não se atrevem a duplicarem. Rofl! Entao, talvez ele possa dar um hound house kick no meu objeto pra remover a instancia..
Pior q vou ficar dependendo do CN(Chuck Norris) ao invés do GC (Garbage Colector) e o CN é da mesma família do GC. Eles nao gostam de receber ordens. ^^
[MSN] [ICQ]
TiagoFoil
JavaGuru
[Avatar]

Membro desde: 22/02/2005 19:46:49
Mensagens: 205
Offline

Luca wrote:Olá

Quando você coloca null na referência o objeto continua em uso ou apenas na memória?

Seu objeto contém outros objetos? As referências deles também foram anuladas?

Dê uma estudada no funcionamento do GC que sempre é útil para todos nós.

[]s
Luca


Ele continua instanciado, pois quando dou um getInstance ele retorna a mesma instancia ao inves de criar uma nova. Este objeto possui outros objetos sim, as referencias deles tem q ser anuladas uma a uma?

Vou estudar mais sobre o GC ^^

Brigadao
[MSN] [ICQ]
diego2005
GUJ Master
[Avatar]

Membro desde: 17/08/2005 10:11:05
Mensagens: 1095
Offline

Um exemplo:



SCJP 1.4

Meu Currículo
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

TiagoFoil wrote:

Ele continua instanciado, pois quando dou um getInstance ele retorna a mesma instancia ao inves de criar uma nova. Este objeto possui outros objetos sim, as referencias deles tem q ser anuladas uma a uma?

Vou estudar mais sobre o GC ^^

Brigadao


"getInstance()"? Isso é uma implementação de singleton? Com estado dependendo do contexto?

Que tal você explicar melhor o seu problema?

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
fmeyer
Moderador
[Avatar]
Membro desde: 22/02/2005 17:26:29
Mensagens: 1583
Localização: Sao Paulo
Offline

Maurício Linhares wrote:
"getInstance()"? Isso é uma implementação de singleton? Com estado dependendo do contexto?
Que tal você explicar melhor o seu problema?


falando em singletons eles foram definidos como uma doenca ja ... Singleontiti

http://www.theserverside.com/blogs/thread.tss?thread_id=42116&asrc=EM_NLN_559044&uid=2623147

Fernando Meyer http://fernandomeyer.com
[Email] [WWW]
TiagoFoil
JavaGuru
[Avatar]

Membro desde: 22/02/2005 19:46:49
Mensagens: 205
Offline

Maurício Linhares wrote:
"getInstance()"? Isso é uma implementação de singleton? Com estado dependendo do contexto?

Que tal você explicar melhor o seu problema?


É um singleton sim.

Vou tentar ser mais claro.
Eu tenho uma classe q possui diversas funcionalidades, dentre estas uma q me da um enumeration com elementos q será usados por mim para montar uma lista. Beleza, eu instancio um objeto dessa classe, pego as informaçoes q eu quero, monto minha lista e passo essa lista pra camada de visão. Agora q ja tenho o q eu queria (a lista) eu quero desinstaciar essa classe, nesse exato momento q ja tenho a lista. Por que disso?
Porque eu preciso depois pegar uma nova lista atualizada. E, enquanto esse objeto estiver instanciado, ele nao consegue enxergar novos elementos. Assim sendo, eu tenho q fechar toda aplicaçao (neste momento o objeto finalmente morre) e quando eu abro a aplicaçao denovo a lista pode ser atualizada.
Entao, pra nao ter essa chatisse de ficar fechando e abrindo o programa, eu queria "simular" seu fechamento. Apenas no contexto desse objeto. Assim q eu aprender a colocar código aki pra download eu coloco o código dele.. ^^
[MSN] [ICQ]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Não use uma variavel estática e resolve

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

TiagoFoil wrote:. Assim q eu aprender a colocar código aki pra download eu coloco o código dele.. ^^


Basta fazer copy&paste entre as tags Code.

Seu caso agora ficou um pouco mais claro:

1. Sua lista não será recolhida pelo lixeiro antes de ter todos seus membros anulados. E mesmo assim não será recolhida imediatamente.

2. Seu código parece com o que se usa para mostrar resultado de consulta à base de dados na tela mas feito de um modo muito estranho. Acho que você poderia aproveitar a ocasião para revê-lo.

3. Singletons são úteis e há casos em que são usados. Porém é preciso reconhecer as poucas ocasiões em que eles podem ser usados porque muitas vezes eles atrapalham e muito. Estude bem Singletons e aprenda a reconhecer suas desvantagens para evitar que no futuro seu sistema necessite ser modificado. Muitas vezes há um meio mais flexível de resolver o problema sem usar Singleton.

[]s
Luca

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

Voce tem um SINGLETON no seu codigo, e ta se preocupando com coisas mundanas como vazamento de memoria?

Arranque o singleton de la, depois a gente conversa, ok?
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
TiagoFoil
JavaGuru
[Avatar]

Membro desde: 22/02/2005 19:46:49
Mensagens: 205
Offline

cv wrote:Voce tem um SINGLETON no seu codigo, e ta se preocupando com coisas mundanas como vazamento de memoria?

Arranque o singleton de la, depois a gente conversa, ok?



Meu problema nao é vazamento de memoria.
Meu problema é o q "nao acontece" quando esse cara nao limpa sua instancia. Este é o problema.
[MSN] [ICQ]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team