| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 09:51:17
|
TiagoFoil
JavaGuru
![[Avatar]](/images/avatar/bdcc41211aa62a8f10f26d1a2d1727bf.jpg)
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
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 10:12:36
|
diego2005
GUJ Master
![[Avatar]](/images/avatar/7fd4db88d31ab524e0afe153c4f9465a.jpeg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 10:12:53
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 10:28:00
|
louds
Moderador
![[Avatar]](/images/avatar/1e48c4420b7073bc11916c6c1de226bb.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 10:54:35
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
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/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 11:01:08
|
TiagoFoil
JavaGuru
![[Avatar]](/images/avatar/bdcc41211aa62a8f10f26d1a2d1727bf.jpg)
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. ^^
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 11:06:25
|
TiagoFoil
JavaGuru
![[Avatar]](/images/avatar/bdcc41211aa62a8f10f26d1a2d1727bf.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 11:27:07
|
diego2005
GUJ Master
![[Avatar]](/images/avatar/7fd4db88d31ab524e0afe153c4f9465a.jpeg)
Membro desde: 17/08/2005 10:11:05
Mensagens: 1095
Offline
|
Um exemplo:
|
SCJP 1.4
Meu Currículo |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 11:42:25
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 11:47:48
|
fmeyer
Moderador
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 11:53:40
|
TiagoFoil
JavaGuru
![[Avatar]](/images/avatar/bdcc41211aa62a8f10f26d1a2d1727bf.jpg)
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.. ^^
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 11:57:26
|
louds
Moderador
![[Avatar]](/images/avatar/1e48c4420b7073bc11916c6c1de226bb.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 12:10:11
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
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/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/09/2006 13:39:39
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
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?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2006 08:20:20
|
TiagoFoil
JavaGuru
![[Avatar]](/images/avatar/bdcc41211aa62a8f10f26d1a2d1727bf.jpg)
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.
|
|
|
 |
|
|