next up previous contents
Next: Analyse der Kosten-Nutzen-Rechnung eines Up: No Title Previous: Zusammenfassung   Inhalt


Techniken zur Programmausführung


// He's dead, Jim.
_cfg = (PhaseCFG*)0xdeadbeef;

Sourcecode of the Hotspot VM's optimizing Compiler

Zur effizienten Ausführung von Java-Code wird ein optimierender Compiler benötigt - andererseits muß die Möglichkeit bestehen, zur Laufzeit Klassen hinzuzufügen. Dies führt zum Modell des dynamischen Compilers, der die ausgeführten Klassen erst zur Laufzeit übersetzt. Dieses Kapitel beschäftigt sich mit den Implementierungstechniken dynamischer Compiler. Dabei wird der Schwerpunkt auf jene Punkte gelegt, die einen dynamischen Compiler von einem statischen unterscheiden.

So ist es bei der Verwendung eines dynamischen Compilers nicht sinnvoll, alle Klassen gleichermaßen zu optimieren - hingegen muß eine Kosten-Nutzen-Rechnung ausgeführt werden, um zu entscheiden, welche Methode zur Verbesserung der Performanz zu kompilieren ist. Abschnitt 3.1 befaßt sich mit dieser Thematik. Als Grundlage für die o.g. Kosten-Nutzen-Rechnung benötigt der Compiler Informationen über das Laufzeitverhalten des ausgeführten Programms. Diese Erhebung von Laufzeitprofilen wird in 3.2 geschildert.

Abschnitt 3.3 beschäftigt sich mit dem Problem der Deoptimierung, das durch das dynamische Laden von Klassen entsteht, da sich beim Hinzufügen einer Klasse die Voraussetzungen für die spezifische Optimierung einer Methode ändern könnnen.

Zuletzt werden in 3.4 globale Analyseverfahren beschrieben, die Optimierungen ausführen, die Methodengrenzen überschreiten. In 3.5 werden die Ergebnisse zusammengefaßt.




next up previous contents
Next: Analyse der Kosten-Nutzen-Rechnung eines Up: No Title Previous: Zusammenfassung   Inhalt

2001-02-28