GarbageColl
In 4.2 veraltet, bitte den Garbage-Manager verwenden!
GarbageColl
Stack | Position | Beschreibung |
---|---|---|
Stack(In) | Top | - |
Stack(Out) | Top | - |
Startet einen Garbage-Collection-Prozeß, der Speicherbereiche, die von
einer durch ein Event getriggerte Anweisungsfolge auf dem Stack hinterlassen
werden, zurückgewinnt.
Für elementare Datentypen (ganze Zahlen,
Zeichenketten, multiple Zeichenketten, ...) geschieht dies automatisch; es gibt
keinen Grund, diesen Vorgang überhaupt zur Kenntnis zu nehmen. Aber auch der
Speicher, den ein transientes Objekt X einst belegt hat, soll freigegeben
werden. Der Garbage-Collection-Algorithmus kann - zumindest in diesem Release -
nicht feststellen, ob X von einem weiteren (transienten) Objekt Y referenziert
wird. Solange X und Y auf dem Stack liegen oder Variablen zugewiesen sind, ist
alles gut. Wird dann nur X frei, enthält Y nach der nächsten
Garbage-Collection eine Referenz auf ein nicht existentes Objekt. Dies zu verhindern gibt es zwei Möglichkeiten:
- dafür sorgen, dass das referenzierte Objekt X in einer Variablen gehalten wird (solange Y existiert)
- X explizit von der Garbage-Collection ausschließen (siehe CreateTransObject)
und später selbst (mit DeleteObject) freigeben Dieses Problem betrifft auch (transiente) Objekte als Rückgabewert einer Funktion: Die im MDI angegebene Signatur bestimmt, ob InstantView® das Objekt von der Garbage-Collection ausschließt oder
nicht.