fcoromoto,
Você marcou 2 porque considerou que o objeto criado em “Beta b1 = new Beta();” também estaria disponível para o GC porem ele está sendo usado na variável ESTATICA b1 da classe Alpha.
A
alexmonassa
Neste exemplo temos a criação de 4 objetos ( através do new ) sendo que é feita a referência para dois desses objetos ( através das atribuições a1.b1 ,a1.b2, etc) e depois temos a atribuição null para 3 deles : a1,b1,b2. só que dois deles ainda possuem referência apontando para eles (a1.b1, a1.b2, a2.b2) portanto não estarão os objetos disponíveis para GC , apenas o objeto criado pela referência a1 terá nenhuma thread apontando para ele. O objeto da referência a2 não é apontado para null. Portanto teríamos apenas 1 objeto disponível. Lembrando que somente os objetos estarão disponíveis para GC quando nenhuma thread viva consegue alcançá-los.
Ajudou ou complicou , qq coisa pode falar.
A
alexmonassa
A minha dúvida para esta questão ( e particularmente eu já não lembro mais disso) é que quando o programa encerra todos os 4 estarão disponíveis ou somente 1? pois depois que o programa encerra não existirá mas nenhuma Thread para alcançá-lo. OU neste caso a questão está falando em uma linha específica para GC ?
F
fcoromoto
asousaj:
fcoromoto,
Você marcou 2 porque considerou que o objeto criado em “Beta b1 = new Beta();” também estaria disponível para o GC porem ele está sendo usado na variável ESTATICA b1 da classe Alpha.