2016-05-16 5 views
0

Also ich habe vor kurzem ein Vorstellungsgespräch bekommen und wurde folgende Frage gestellt. (Eigentlich war es nur ein Testschreiben, so konnte ich keine Fragen stellen)Wie viele Objekte sind für die Garbage Collection geeignet?

Am Ende des Hauptverfahrens, wie viele Objekte für die Garbage Collection in Betracht kommen?

public class Main { 
    public static void main(String[] args) { 
     Object obj; 
     for (int i = 0; i < 5; i++) { 
      obj = new Object(); 
     } 
     obj = null; 
    } 
} 

(A) 0

(B) 1

(C) 5

Ich weiß es ist 0, da zumindest ein Objekt (obj) wird Müll gesammelt werden, aber ich weiß auch, dass obj ist nicht wirklich das Objekt, es ist nur ein Re ference zu ihm. Also meine Antwort war 5.

Ist das korrekt? Wenn nicht, warum?

+3

wow .. zu viele Kugeln auf einer Linie .. BTW 5 ist richtige Antwort – sidgate

+1

ist so einfach Mann. Es sollte 'Fünf' sein. aber muss ich an welcher linie auch erwähnt ?? –

Antwort

6

Ihre Antwort 5 is correct.

Hier insgesamt 5 Anzahl der Objekte erstellt durch for-Schleife und alle diese werden für Garbage Collection am Ende der Methode in Frage kommen.

4

Wahrscheinlich ,

Der Compiler kann einige Optimierung Training und die gesamte Schleife beseitigen und vermeiden, die in erster Linie in der Schleife erstellt fünf Objekte zu schaffen. So

wenn keine Compiler-Optimierung vor sich geht, 5 Objekte werden innerhalb der Schleife erstellt und ihre Referenzen in der Variablen obj am Ende Variable überschrieben wird das letzte Objekt verweisen, die null zugewiesen wird.

+0

Ist das auch eine Option? In welchen Situationen kann ein Compiler das tun? –

+0

Wenn die Schleife nichts tut, kann der Compiler sie eliminieren. –

+0

Wahrscheinlich haben Sie Recht, aber es hängt immer noch vom Compiler und seiner Laufzeitoptimierung ab. +1 –