Moin zusammen. Ich muss hier den Garbage Collector ausführen und ein "Mark-and-Compact" durchführen.
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
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