home *** CD-ROM | disk | FTP | other *** search
- 16-Jun-92
-
-
- Garbage-Collector Library
- ===============================
-
-
- Was macht die garbagecollector.library:
-
- Ein sogenannter Garbage-Collector ist ein Programm, daß von anderen
- Programmen nicht mehr verwendete Ressourcen, wie in diesem Fall
- Systemspeicher, aufsucht und automatisch freigibt.
-
- Die Programme werden dadurch einfacher, flexibler und sicherer.
-
- Um ihre Arbeit zu verrichten startet diese Library einen Hintergrundprozeß,
- der parallel zum eigentlichen Programm läuft und ständig abwechselnd
- nicht mehr verwendeten Speicher aufsucht und diesen dann freigibt.
-
- Um die Effizienz zu steigern werden kleinere freie Speicherblöcke nicht
- direkt an das System zurückgegeben, sondern von der Library zwischen-
- gespeichert, so daß sie schneller wieder verwendet werden können.
-
-
- Der Voreinstellungser GarbagePrefs:
-
- Damit die Garbage-Collector Library auch auf sehr unterschiedlichen System
- mit bestmöglicher Effizienz eingesetzt werden kann, können verschiedene
- vom System abhängigen Einstellungen mit einem speziellen Editor gemacht
- werden. Dies erledigt das Programm GarbagePrefs, das zu den anderen
- Voreinstellungsern in das Verzeichnis 'Prefs' der Systemdiskette bzw.
- der Systempartition kopiert werden sollte.
-
- Wird GarbagePrefs durch einen Doppelklick auf sein Piktogramm gestartet,
- können Über verschiedene Symbole einige Werte verändert werden. Diese können
- dann wie bei den anderen Voreinstellungsern mit dem Symbol 'Speichern'
- gespeichert und mit 'Benutzen' verwendet werden. 'Abbrechen' läßt die
- zuletzt aktiven Werte unverändert.
-
- Möchten Sie sich nicht weiter mit der Funktion der einzelnen einzustellen
- befassen, reicht es, wenn Sie 'Werte vorschlagen' aus dem Menü 'Editieren'
- anwählen und diese Werte dann mit 'Speichern' aktivieren.
-
- Die einzelnen Werte haben folgende Bedeutung:
-
- Collector-Task Priorität:
-
- Die Priorität des Hintergrundprozesses, der den Speicher einsammelt. Der
- Werte sollte auf jeden Fall kleiner null sein, da sonst dieser Prozeß
- alle Rechenzeit verwendet und ein normales Arbeiten mit dem Computer
- unmöglich macht.
-
- Zudem sollte die Priorität kleiner als die aller Prozesse sein, die diese
- Library verwenden.
-
- Auch Chip-RAM allozieren:
-
- Ist dieses Symbol angewählt, alloziert diese Library sowohl Chip-RAM wie
- auch sonstiges RAM. Ist es jedoch nicht angewählt, wird das langsamere
- Chip-RAM von der Library nicht verwendet. Dies ist jedoch nur sinnvoll,
- wenn genügend sonstiger Speicher existiert.
-
- Auf Collector-Zyklus warten:
-
- Ein Collector-Zyklus ist das Suchen von nicht mehr verwendetem Speicher
- und das anschließende Freigeben dieses Speichers.
-
- Die hier einzugebenden Werte bestimmen, nach wievielen von der Library
- angeforderten Objekten oder nach welcher Speichermenge die Library
- mindestens einen Collector-Zyklus beendet haben sollte.
-
- Gibt man hier sehr große Werte an, kann es passieren, daß der Collector
- zu wenig Rechenzeit bekommt und nach einiger Zeit einen sehr aufwendigen
- Collector-Zyklus bearbeiten muß, da sehr viele Objekte untersucht werden
- müssen. Zu kleine Werte bremsen dagegen Programme stark, da sie zu oft
- auf Collector-Zyklen warten müssen, die eigentlich nicht unbedingt nötig
- wären.
-
- Für die beiden Werte kann jeweils -1 angegeben werden, um anzuzeigen, daß
- beliebig viele Objekte bzw. beliebig viel Speicher alloziert werden kann,
- ohne daß auf einen Collector-Zyklus gewartet wird.
-
- Maximal allozieren:
-
- Die hier angegebenen Werte geben die Obergrenze an Speicher an, der von
- der Library alloziert werden darf. Es kann zum einen die maximale
- Anzahl an angeforderten Objekten (Speicherblöcken) und zum anderen
- die maximal Anzahl in Bytes angegeben werden.
-
- Speicher freihalten mindestens:
-
- Die angegebene Menge an Speicher wird vom Collector immer freigehalten
- und bleibt dem System zur Verfügung.
-
- Damit man auch bei einem Speichermangel noch mit dem Rechner arbeiten
- kann, sollte man hier mindesten ca. 20000 Bytes freihalten.
-
- Alloziert die Library kein Chip-RAM (s.o.), kann hier jedoch ruhig
- 0 angegeben werden.
-
- Größten Block freihalten mindestens:
-
- Die Library alloziert nur Speicher, solange der größte freie
- Speicherblock größer als der hier angegebene Wert bleibt.
-
- Freigehaltenen Speicher prüfen alle:
-
- Hier wird angegeben, wie oft, dh. nach wievielen Speicheranforderungen,
- die bei 'Speicher freihalten mindestens' angegebene Untergrenze
- geprüft werden soll.
-
- Wird dies zu oft geprüft, wird das Anfordern von Speicher deutlich
- langsamer. Wird jedoch zu selten geprüft, kann die Untergrenze
- dennoch unterschritten werden.
-
- '-1' gibt hier jeweils an, daß der freigehaltene Speicher nie geprüft
- werden soll.
-
- Größten Block prüfen alle:
-
- Entsprechend zu 'Freigehaltenen Speicher prüfen', wird hier angegeben,
- wie oft der größte freizuhaltende Block geprüft werden soll.
-
- '-1' gibt hier jeweils an, daß der größte Block nie geprüft werden soll.
-
- Maximale Größe der gemerkten Objekte:
-
- Der hier angegebene Wert bestimmt eine maximale Größe von Objekten, die
- von der Library zwischengespeichert werden sollen, um die Effizienz beim
- erneuten Anfordern eines solchen Objekts zu steigern.
-
- Maximal gemerkter Speicher:
-
- Hier kann angegeben werden, bis zu welcher maximalen Anzahl an Objekten
- und welcher Obergrenze an Speicher die Library sich freie Objekte merken
- soll, bevor sie sie an das System zurückgibt.
-
- Große Werte hier erhöhen die Effizienz, kosten jedoch Speicher.
-
-
- Das Statistikprogramm GCStat:
-
- Mit diesem Programm kann die Aktivität der Garbage-Collector Library
- beobachtet werden. Nach dem Start durch Anwählen des Piktogramms öffnet
- GCStat ein kleines Fenster. Dort werden in einer Zeile unter dem
- Fenstertitel die Menge an derzeit von der Library allozierten Speicher,
- die Anzahl der lebendigen und toten Objekte und die Nummer des aktuellen
- Collector-Zyklus angezeigt.
-
- Lebendige Objekte sind diejenigen, von denen die Library meint, daß sie noch
- in Benutzung sind. Tote Objekte werden derzeit von keinem Programm benutzt,
- werden jedoch von der Library zwischengespeichert.
-
- Die Nummer des Collector-Zyklus wird einfach nach jedem Zyklus um eins hoch-
- gezählt. Der erste Zyklus hat die Nummer 1.
-
- Unterhalb dieser Textzeile zeigt GCStat grafisch das Mengenverhältnis von
- toten zu lebendigen Objekten an. Dabei wird der Anteil der lebendigen
- Objekte mit Farbe 1 (gewöhnlich schwarz) und der der toten mit Farbe 3
- (gewöhnlich blau) dargestellt.
-
- Zusätzlich zeigt eine waagerechte Linie in Farbe 2 (weiß) an, wieviel
- Speicher im Augenblick in Bytes von der Library alloziert wurde. Dabei ist
- diese Linie oben im Fenster, wenn dies viel Speicher ist, und unten sonst.
-
-
- Kopierrecht:
-
- Die garbagecollector.library und der dazugehörende Vereinsteller
- GarbagePrefs und das Programm GCStat sind © 1992 Fridtjof Siebert.
-
- Sie und diese Dokumentation dürfen, auch einzeln, zusammen mit Programmen,
- die mit dem Amiga Oberon Compiler übersetzt wurden, frei vertrieben werden.
- Dies schließt die Veröffentlichung als frei kopierbare oder auch als
- kommerzielle Software ein.
-
- Zusammen mit Programmen, die diese Library benutzen, die jedoch nicht mit
- Amiga Oberon übersetzt wurden, darf diese Library nur mit ausdrücklicher
- schriftlicher Genehmigung des Autors vertrieben werden.
-
-
- --- Fridtjof.
-
-
-