Pour l'enregistrement, je suis PAS un débutant Java, mais - plutôt - un gars de niveau intermédiaire qui a oublié un peu sur les fondamentaux de Java.Pourquoi l'objet spécifié est-il éligible pour la récupération de place?
class C{ public static void main(String a[]){ C c1=new C(); C c2=m1(c1); //line 4 C c3=new C(); c2=c3; // line 6 anothermethod(); } static C m1(C ob1){ ob1 =new C(); // line 10 return ob1; } void anothermethod(){} }
À partir du code ci-dessus:
Pourquoi est-ce que, après la ligne 6, 2 objets de type
C
sont éligibles pour la collecte des ordures (GC)?Pourquoi est-ce pas que, dans la ligne 4 et la ligne 10, un exemplairede
c1
est passée dans le procédém1()
. Donc, éventuellement à la ligne 6, il y aura 1 objet (pas 2) qui sera admissible au GC. Après tout, n'est-ce pas java pass-by-value plutôt que pass-by-reference?
Vous utilisez le code sympa obfuscator – Roman
ce code ne devrait pas compiler: 'anothermethod' n'est pas statique mais être appelé dans un contexte statique –