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.