Garbage collection question : Quantos objetos sao elegiveis para o GC após a execução

Pessoal, estou com uma duvida. É sobre ilhas e elegibilidade de objetos para o garbage collection.

Quantos objetos serão elegiveis para o GB , apos a execuçao do método main?

Agradeço a ajuda! Deem uma olhada. Eu achei que fossem 2 objetos mas nao tenho certeza.

Fico no aguardo.


	public class IslandObjectGarbageCollectionElegible {
		
		public static void main(String[] args) {
			
			Beta beta1 = new Beta();
			Beta beta2 = new Beta();
			
			Alpha alpha1 = new Alpha();
			Alpha alpha2 = new Alpha();
			
			alpha1.b1 = beta1;
			alpha1.b2 = beta1;
			
			alpha2.b2 = beta2;
			
			alpha1 = null;
			beta1 = null;
			beta2 = null;
		}
		
	}
	
	/* My class Beta*/
	class Beta {}
	
	/* My class Alpha*/
	class Alpha {
		
		/* two beta attributes */
		static Beta b1;
		Beta b2;
	}

[quote=Carlos Renato Domingos]Pessoal, estou com uma duvida. É sobre ilhas e elegibilidade de objetos para o garbage collection.

Quantos objetos serão elegiveis para o GB , apos a execuçao do método main?

Agradeço a ajuda! Deem uma olhada. Eu achei que fossem 2 objetos mas nao tenho certeza.

Fico no aguardo.

[code=java]

public class IslandObjectGarbageCollectionElegible {
	
	public static void main(String[] args) {
		
		Beta beta1 = new Beta();
		Beta beta2 = new Beta();
		
		Alpha alpha1 = new Alpha();
		Alpha alpha2 = new Alpha();
		
		alpha1.b1 = beta1;
		alpha1.b2 = beta1;
		
		alpha2.b2 = beta2;
		
		alpha1 = null;
		beta1 = null;
		beta2 = null;
	}
	
}

/* My class Beta*/
class Beta {}

/* My class Alpha*/
class Alpha {
	
	/* two beta attributes */
	static Beta b1;
	Beta b2;
}

[/code][/quote]
o alpha2 não é elegivel, tem uma referência ao beta2 no atributo b2 e uma referencia ao beta1 no atributo b1… então apenas o alpha1 é elegivel… isso antes do método main acabar é lógico por que se fosse depois então o escopo de todos estes teria acabado e todos eles estariam…

a claro, não sei se ficou claro, não expliquei isso, o atributo b1 é estático, então preenchendo-o em alpha1 você também está preenchendo-o em alpha2, por isso que alpha2.b1 aponta para beta1.