Smart Pointers podem ser comparadas ao Garbage Collector?  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
Marck
Virtual Machine Man
[Avatar]

Membro desde: 15/08/2006 16:15:11
Mensagens: 598
Offline

Olá!

Bom, a dúvida é essa: "Smart Pointers podem ser comparadas ao Garbage Collector?"

obrigado!

"A vida me deu tudo que eu pedi. Agora se o que eu pedi foi pouco, ai o problema já é meu!". Sartre

Besteiras sobre programação

http://toobject.wordpress.com/
DataModelDinamic
[Email] [WWW] [MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Não; o uso de smart pointers implica em desalocação de objetos determinística, enquanto o garbage collector efetua desalocação de objetos não-determinística.
[WWW]
Marck
Virtual Machine Man
[Avatar]

Membro desde: 15/08/2006 16:15:11
Mensagens: 598
Offline

rss
Imaginei que voce fosse responder thingol! rss

E o que isso quer dizer?

Obrigado!

"A vida me deu tudo que eu pedi. Agora se o que eu pedi foi pouco, ai o problema já é meu!". Sartre

Besteiras sobre programação

http://toobject.wordpress.com/
DataModelDinamic
[Email] [WWW] [MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Um smart pointer (como o "shared_ptr" que está presente na TR1 do C++0X, ou no Boost) tem uma política de chamar o destrutor do objeto (e portanto efetuar sua desalocação) em um instante bem determinado; no caso do shared_ptr, quando a contagem de referências ao objeto for zerada.

No caso de referências e garbage collectors, mesmo que todas as referências a um objeto sejam anuladas, o objeto somente será desalocado quando o "garbage collector" assim o determinar.
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20573
Localização: Curitiba/PR
Offline

Que o Smart Pointer tem hora certa para funcionar, no caso, no exato instante que a contagem de referências chegar a zero. Já no caso do garbage collector, por se tratar de um processo externo, é impossível determinarmos o momento exato que ele irá atuar.

Outra coisa, o garbage collector pode automaticamente detectar ilhas de referências, como a classe A->B e B->A mas ninguém apontando para A ou B. No caso de SmartPointers, ou o programador identifica isso de maneira consciente e usa um weak pointer, ou os dois objetos não serão coletados, gerando leaks.

A confusão ocorre pq os Smart pointers efetivamente fazem o papel de Garbage Collection, porém, eles não são um Garbage Collector.
O próprio nome já implica em uma entidade externa, e não em várias pequenas classes. No fundo, podem ser comparados pela sua utilidade, mas não pelo seu mecanismo de funcionamento.

This message was edited 2 times. Last update was at 01/07/2009 14:44:07


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Marck
Virtual Machine Man
[Avatar]

Membro desde: 15/08/2006 16:15:11
Mensagens: 598
Offline


Entendido.
Em suma, os dois fazem as mesmas coisas, que é proteger o programador, porém como fazem é diferente.
E os smart pointers são opcionais. Já o Garbage, está sempre lá! rs

obrigado!

"A vida me deu tudo que eu pedi. Agora se o que eu pedi foi pouco, ai o problema já é meu!". Sartre

Besteiras sobre programação

http://toobject.wordpress.com/
DataModelDinamic
[Email] [WWW] [MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team