| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/06/2007 09:48:11
|
repramos
What is classpath?
Membro desde: 11/06/2007 09:42:16
Mensagens: 5
Localização: São Paulo - SP
Offline
|
Pessoal, dado o código abaixo, quantos objetos estão disponíveis para o GC a partir da linha 19? 0, 1 ou quantos? Alguem sabe me dizer?
Editado pela moderação para incluir as tags Code para tornar o código legível
|
Rodrigo Eduardo Pereira Ramos
Sun Certified Java Programmer SE 5.0 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/06/2007 10:00:20
|
arthurnn
JavaEvangelist
Membro desde: 22/12/2006 17:31:53
Mensagens: 477
Offline
|
nenhum objeto
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/06/2007 10:27:19
|
Omeganosferatu
JavaEvangelist
![[Avatar]](/images/avatar/47a0a618c0365cf757ff3021ee5ef976.jpg)
Membro desde: 05/01/2007 10:13:24
Mensagens: 328
Localização: São Paulo
Offline
|
Hummm analisando bem acho que 1 objeto. Afinal de contas voce instancia um o2 pra poder instanciar um o4 ..... acho que o o2 vai pro GC pois a variavel referencia apenas o o4 ... certo ?
|
Sun Certified Java Programmer
Sun Certified Java Developer
The death of one is a tragedy, but death of a million is just a statistic ( Joseph Stalin ) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/06/2007 10:30:53
|
arthurnn
JavaEvangelist
Membro desde: 22/12/2006 17:31:53
Mensagens: 477
Offline
|
vdd vc quis dizer aqui neh?
tb estou achando isso agora.. mais e ai?!?! como saberemos a vdd?!?!? haha
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/06/2007 10:31:17
|
nbluis
GUJ Master
![[Avatar]](/images/avatar/f0682320ccbbb1f1fb1e795de5e5639a.jpg)
Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline
|
Um....
esse new OO2() não é referenciado.
|
Luis Eduardo Bohrer
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/06/2007 10:38:22
|
repramos
What is classpath?
Membro desde: 11/06/2007 09:42:16
Mensagens: 5
Localização: São Paulo - SP
Offline
|
Pois é... é bem essa a dúvida!!!
Eu estava na dúvida se o objeto OO2 era criado e já liberado para o GC.
|
Rodrigo Eduardo Pereira Ramos
Sun Certified Java Programmer SE 5.0 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/06/2007 10:43:42
|
repramos
What is classpath?
Membro desde: 11/06/2007 09:42:16
Mensagens: 5
Localização: São Paulo - SP
Offline
|
Obrigado galera.
|
Rodrigo Eduardo Pereira Ramos
Sun Certified Java Programmer SE 5.0 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/06/2007 10:52:34
|
Omeganosferatu
JavaEvangelist
![[Avatar]](/images/avatar/47a0a618c0365cf757ff3021ee5ef976.jpg)
Membro desde: 05/01/2007 10:13:24
Mensagens: 328
Localização: São Paulo
Offline
|
esse new OO2() não é referenciado.
Entao justamente, por ele nao ser referenciado ele é criado e ja disponibilizado pro GC certo ???
Bom tenho quase certeza que é isso. A menos que esteja muito enganado hehehe....
|
Sun Certified Java Programmer
Sun Certified Java Developer
The death of one is a tragedy, but death of a million is just a statistic ( Joseph Stalin ) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/06/2007 10:59:41
|
maquiavelbona
JWizard
![[Avatar]](/images/avatar/24bea84d52e6a1f8025e313c2ffff50a.jpg)
Membro desde: 29/06/2006 09:06:51
Mensagens: 2447
Localização: São Paulo - SP
Offline
|
Omeganosferatu wrote:
esse new OO2() não é referenciado.
Entao justamente, por ele nao ser referenciado ele é criado e ja disponibilizado pro GC certo ???
Bom tenho quase certeza que é isso. A menos que esteja muito enganado hehehe....
Ele não é disponibilizado tão rápido assim. Quando a primeira vez que o GC for executado, ele identificará que o objeto está "livre" e o marcará para recolhimento. Numa segunda vez que o GC executar, ele será "limpo", executando o método finalize() do objeto e agora realmente liberando memória. Muita gente ainda acha que logo depois de "liberado" o objeto e logo após a primeira execução do GC a memória será liberada por completo.
Para mais detalhes: http://www.guj.com.br/java.tutorial.artigo.28.1.guj
Até!
|
----------------------------------------------------------------
"Within a few years a simple and inexpensive device, readily carried about, will enable one to receive on land or sea the principal news, to hear a speech, a lecture, a song or play of a musical instrument, conveyed from any other region of the globe. "
Nikola Tesla - A means for furthering Peace (1905)
"Gedanken ohne Inhalt sind leer, Anschauungen ohne Begriffe sind blind."
Immanuel Kant - Kritik der reinen Vernunft (1781) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/06/2007 13:34:48
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
A resposta correta é realmente nenhum, porque todos os objetos são referenciados por objetos válidos (não elegíveis)
O código acima instância um OO2 para poder instanciar OO4 e embora o objeto OO2 não seja mais usado ele é referenciado por OO4 já que OO4 é uma inner class de OO2. Como tal , mesmo esse objeto auxiliar não é elegível.
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/06/2007 13:05:25
|
RafaelVS
JavaEvangelist
![[Avatar]](/images/avatar/50454f95bbf5e6478cc0a55d08338731.jpg)
Membro desde: 13/12/2006 09:50:16
Mensagens: 405
Localização: Recife - PE
Offline
|
Na minha opinição, o objeto "auxiliar" do tipo OO2 criado em
será sim elegível para o GC... pois ele está sendo utilizado apenas para criar OO4 (e sua referência não está sendo colocada em nenhuma variável), o objeto do tipo OO4 criado a partir daquele do tipo OO2 não tem nenhuma referência para ele (o fato de ele ser inner classe não garante isso)...
complementando o comentário do maquiavelbona:
Numa segunda vez que o GC executar, ele será "limpo", executando o método finalize() do objeto e agora realmente liberando memória
Na verdade, não necessariamente após o método finalize() o objeto será liberado da memória, pois é possível que o método finalize() guarde a referência de this em um outro local (por exemplo, uma variável estática de outra classe) e, nesse caso, ainda não seria recolhido da memória... Além disso, vale lembra rque o método finalize() só é executado uma vez em cada objeto, o que significa que se ele ja executou o finalize() e foi guardada sua referência em um outro local... se pela segunda vez não tivermos mais nenhuma referência ao objeto, quando chegar o momento do GC fazer a coleta o objeto será removido sem executar novamente o método finalize().
[]'s
|
- Mestrando em Engenharia de Software no CIn/UFPE;
- Pós-Graduado em Engenharia de Software na POLI/UPE;
- Bacharel em Ciência da Computação na UNICAP (Universidade Católica de Pernambuco);
- Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0 (score 95%);
- Sun Certified Web Components Developer for J2EE 1.4 Platform (score 89%) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/06/2007 13:52:58
|
Flasoft
JavaGuru
![[Avatar]](/images/avatar/afb0b97df87090596ae7c503f60bb23f.jpg)
Membro desde: 22/05/2006 15:46:02
Mensagens: 230
Localização: Araraquara (SP interior)
Offline
|
A resposta é 0(zero objetos estarão disponiveis para o gc).
pensem:
004 é inner de 002 e sendo assim tem acesso às variaveis de instancia e metodos do objeto do tipo 002 à qual ele foi referenciado no momento em que foi instanciado. Apesar de o obj 002 não possuir uma variavel de referencia que o aponte, ainda é possivel que o objeto 004 deseje acessar seus métodos ou variáveis, sendo assim ainda é necessário mante-lo na memória.
Concordam?
Me desejem boa sorte, pq amanhã é meu exame de SCJP...
|
Blog: http://flasoft.blogspot.com
SCJP5
Achoqueminhabarradeespaçosestácomproblemas
eU connsigg diggtar 500 caratereteres porr minito |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/06/2007 16:32:31
|
Omeganosferatu
JavaEvangelist
![[Avatar]](/images/avatar/47a0a618c0365cf757ff3021ee5ef976.jpg)
Membro desde: 05/01/2007 10:13:24
Mensagens: 328
Localização: São Paulo
Offline
|
Pootz quebraram meu paradigma aehuaehuea seis tem certeza???
bom espero que sim
boa sorte na prova...
|
Sun Certified Java Programmer
Sun Certified Java Developer
The death of one is a tragedy, but death of a million is just a statistic ( Joseph Stalin ) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/06/2007 16:51:38
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
RafaelVS wrote:Na minha opinição, o objeto "auxiliar" do tipo OO2 criado em
será sim elegível para o GC... pois ele está sendo utilizado apenas para criar OO4 (e sua referência não está sendo colocada em nenhuma variável), o objeto do tipo OO4 criado a partir daquele do tipo OO2 não tem nenhuma referência para ele (o fato de ele ser inner classe não garante isso)...
Garante sim senhor. Dentro de OO4 tenho que poder executar o seguinte código
Para que isto seja possível, OO4 sempre tem uma referencia a OO2 que pode ser obtida com OO2.this . Se tem duvidas use um debugger e veja que existe uma variável dentro do OO4 que aponta para OO2.
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/06/2007 16:53:00
|
#@®®¡$
Moderador
![[Avatar]](/images/avatar/2288f691b58edecadcc9a8691762b4fd.jpg)
Membro desde: 13/02/2004 09:42:28
Mensagens: 807
Localização: São Paulo
Offline
|
O Flasoft e o sergiotaborda estão corretos.
O objeto OO2 criado na linha 18 é referenciado pelo OO4 interno. Ele só não seria se OO4 fosse static, mas aí até a declaração seria diferente.
Essa é uma questão que eu erraria fácil, com minha mania de ler rápido.
|
Wilerson "#@®®¡$" de Oliveira
http://mundoestranho.net/blog/
Douglas Adams wrote:I love deadlines. I like the whooshing sound they make as they fly by.
|
|
|
 |
|
|