Lade...
 

CX_GARBAGE_MANAGER::SetTriggerFactor

CX_GARBAGE_MANAGER::SetTriggerFactor

Beschreibung:

Die Garbage Collection (GC) wird nicht bei jedem Aufruf wirklich durchgeführt, sondern nur dann, wenn sich genügend Müll angesammelt hat.

Im System befinden sich immer eine Reihe von aktiven und inaktiven Objekten. Aktive Objekte werden zu inaktiven Objekten, wenn sie nicht mehr benötigt werden. Überschreitet die Anzahl von aktiven und inaktiven Objekten die Anzahl der aktiven Objekte um das 10fache, wird die Garbage Collection aufgerufen und räumt die inaktiven Objekte weg. Der Faktor von 10 ist der Standardwert und lässt sich mit dieser Klassenfunktion verändern.

Beispiel: Im Laufe der Zeit halten diverse Variable ingesamt 1.000 Objekte (aktive Objekte). Bei einer Tätigkeit werden z.B. durch Rechenoperationen immer neue Objekte für Zwischenergebnisse erzeugt. Irgendwann befinden sich 10.000 Objekte im System. Erst jetzt (1.000 * 10 = 10.000) räumt die Garbage Collection auf und löscht alle Objekte, die nicht mehr benutzt werden (die inaktiven Objekte). Bei einem Faktor von 2 würde die Garbage Collection bereits bei 200 vorhandenen Objekten aufgerufen.

Je mehr Objekte sich im System befinden, desto höher ist der Speicherverbrauch. Gleichzeitig benötigt die Garbage Collection selbst eine bestimmte Zeit, d.h. je öfter die Garbage Collection ausgeführt wird, desto mehr Zeit geht dafür verloren. Und je niedriger der Faktor ist, desto häufiger wird die Garbage Collection ausgeführt:

Faktor Häufigkeit Speicherverbrauch Zeitaufwand
klein oft gering hoch
groß selten hoch gering

Der Faktor von 10 hat sich als guter Kompromiss herausgestellt zwischen Speicherverbrauch und Zeitaufwand.

Code-Beispiel:
10 GetManager(GARBAGE) Call(SetTriggerFactor)  // Den Faktor auf den Default-Wert 10 setzen

 

Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top CX_GARBAGE_MANAGER Garbage-Manager-Objekt
  Top-1 INTEGER Faktor
Funktionsaufruf: Call(SetTriggerFactor)