Garbage Collector

DerEineDa

Mitglied
Moin zusammen. Ich muss hier den Garbage Collector ausführen und ein "Mark-and-Compact" durchführen.

Code:
public class GarbageCollection {
public static void main ( String [ ] args ) {
       String [ ] strings = new String [ ] { "a" , "bb" , "c" , "ddd" } ;
       int [ ] integers = new int [ ] { 1 , 2 , 7 , 9 , 3 } ;
       char [ ] characters = new char [ ] { ’a’ , ’m’ , ’Q’ , ’ f ’ } ;
       Object [ ] objects = new Object [ ]
                     { strings , integers , characters , strings } ;

strings = null ;
integers = null ;
objects [ 0 ] = null ;
objects [ 1 ] = null ;
objects [ 2 ] = null ;
// Garbage Collection . . .
}
}

Mark-and-Compact funktioniert so:
- Ich muss erst mal alle vom Hauptprogramm referenzierte Objekte markieren.
- Danach alle von diesen Objekten aus referenzierte Objekte.
- Wiederholen, bis keine weiteren Objekte mehr erreicht werden.
- Anschließend muss ich alle nicht markierten Objekte löschen.

Meiner Meinung nach lautet das Ergebniss so:
strings wird zwar auf null gesetzt aber wird im objects Array im [3] Objekt referenziert. Bedeutet ich muss strings makieren.

integers wird gelöscht da diese auf null ist.
Bei characters wird ja nur das Object in object [2] auf null gesetzt aber nicht die eigentliche referenz.

Also bleibt nach dem Mark-and-Compact nur "a", "b", "c", "ddd", ’a’ , ’m’ , ’Q’ , ’ f ’ strings über.

Seid ihr der auch der Meinung? Kann jemand meine Antwort bestätigen oder widerlegen?

Besten Dank
 
Entweder solltest du alle noch referenzierten Objekte auflisten, oder alle nicht mehr referenzierten 😉

Es ist schon noch mehr referenziert als nur die Strings...
 
Uni Oldenburg Aufgabe haha :'D

Ja, also im Grunde hast du schon recht nur es handelt sich bei den Characters nicht um Objekte sondern um reine primitive Datentypen🙂
 
Zuletzt bearbeitet:

Zurück
Oben