next up previous contents
Next: Abstrakte Interpretation von Bytecode Up: Exakte Garbage Collection für Previous: Exakte Garbage Collection für   Inhalt

Paralleles Führen eines Markierungs-Stack

Das parallele Führen eines Tagstacks stellt die einfachste Methode dar, Maps zu erhalten. Bei dieser Methode wird für jeden Thread, der in der Maschine ausgeführt wird, ein Markierungs-Stack geführt, der für jede Zelle des Stacks ein Bit enthält. Enthält diese Bit den Wert 1 so handelt es sich bei der entsprechenden Stackzelle um eine Referenz; enthält es den Wert 0, so handelt es sich um einen Skalar. Mit jeder Manipulation des Stacks werden die Markierungen entsprechend angepaßt.

Der Nachteil dieser Methode ist der konstante Mehraufwand, der bei jeder Stackoperation anfällt, um den Markierungs-Stack anzupassen. Demgegenüber steht der geringe Speicherverbrauch: Im Gegensatz zu vorausberechneten Tabellen, von denen in der Regel für jede Methode mehrere vorliegen müssen, wird hier nur ein Stack pro Thread benötigt -- aus diesem Grunde wurde diese Technik zur Implementierung der Spotless JVM [Mathiske and Schneider, 2000] verwendet.




2001-02-28