Java Reference
In-Depth Information
a=new double[3];
a[0]; a[1];
a[2];
Arbeitsspeicher
Abbildung 11.5 Erstes Erzeugen eines Arrays
Wird die gleiche Anweisung zum zweiten Mal erreicht, werden dieses Mal fünf Speicher-
plätze angelegt.
a=new double[3];
.
.
a=new double[5];
11
a[0]; a[1];
a[2];
a[3];
a[4];
Arbeitsspeicher
1.3
2.7
3.0
Abbildung 11.6 Zweites Anlegen des Arrays
Abbildung 11.6 zeigt, dass der Bezeichner a nun auf den neuen Speicherbereich verweist.
Der ursprünglich reservierte Speicherbereich für das Array mit drei Elementen liegt
zwar noch vor, aber es kann nicht mehr zugegriffen werden. Es existiert keine Referenz
mehr auf die einzelnen Noten. Sie können sich sicher leicht vorstellen, dass bei mehre-
ren Programmdurchläufen mit eventuell dabei auch sehr großen Arrays sehr viel Spei-
cherplatz verschwendet wird (weil reserviert, aber nicht mehr nutzbar). In anderen
Programmiersprachen muss solcher Speicher explizit durch eine entsprechende
Anweisung wieder freigegeben werden. In Java muss sich der Programmierer um diese
nicht mehr zugreifbaren Speicherbereiche nicht kümmern. Der Garbage Collector von
Java sorgt dafür, dass diese Speicherbereiche freigegeben werden. Zu diesem Zweck ver-
fügt jedes Java-Objekt über einen Zähler, der die Referenzen zählt, die auf das Objekt ver-
weisen. Nimmt dieser Zähler den Wert 0 an, bedeutet das für den Garbage Collector,
dass der betreffende Speicherbereich freigegeben werden kann. Für den Programmierer
ist allerdings nicht vorhersehbar, wann der Garbage Collector aktiv wird. Auf jeden Fall
wird er spätestens dann mit seinem Aufräumvorgang beginnen, wenn der Speicher
knapp wird. Möchten Sie vorbeugen, dass es erst gar nicht dazu kommt, dass Speicher
durch das eigene Programm knapp wird, so können Sie den Vorgang mit der Anweisung
System.gc();
 
Search WWH ::




Custom Search