next up previous contents
Next: Sun JDK 1.2.2 Reference Up: No Title Previous: Zusammenfassung und Ausblick   Inhalt


Implementierungen virtueller Maschinen

In diesem Anhang werden einzelne Implementierungen virtueller Maschinen verglichen. Dabei werden überwiegend virtuelle Java-Maschinen verglichen - lediglich die Self und Tycoon-2 sind als Referenz vertreten. Die Auswahl der dargestellten Java-Maschinen erfolgte zum einen nach ihrer Relevanz im aktuellen Markt von JVMs und zum anderen nach der Fortschrittlichkeit ihrer technischen Konzepte.

In den Tabellen A.1 bis A.3 werden die einzelnen Implementierungen zunächst in tabellarischer Form verglichen. In den folgenden Abschnitten werden daraufhin noch einzelne Besonderheiten genannter Implementierungen dargestellt.

Die betrachteten Punkte entsprechen den in dieser Arbeit identifizierten Hauptkomponenten Speicherverwaltung, Thread-System und Ausführungseinheit. Entsprechend werden bereits im Rahmen der Arbeit eingeführte Fachbegriffe nicht weiter erläutert.

Abbildung A.1: Tabellarischer Vergleich verschiedener Implementierungen virtueller Maschinen.
Komponente Sun JDK 1.2.2 Reference Sun HotSpot 2.0 Server Sun HotSpot 2.0 Client Sun Research-VM1
Plattformen Solaris, Win32, Linux-x86 Solaris, Win32, Linux-x86 Solaris, Win32, Linux-x86 Solaris
Garbage Collection konservativer ,,Mark-Compact`` m. handles generational (kopierend + inkrementell2) generational (kopierend + inkrementellb) generational (kopierend)3
Allokation LAB, dann gesperrte lineare Suche Eden mit CAS Eden mit CAS LAB dann CAS
Thread-Implementierung user space oder OS4 OSd OSd OSd
Sperr-Implementierung OS-Mutex, Monitorzuordnung durch Tabelle stackalloziert, Zuordnung durch header word displacement stackalloziert, Zuordnung durch header word displacement Metalock-basiert, Zuordnung durch header word displacement
Ausführung Interpreter, Compiler5 Interpreter, optimierender Compiler Interpreter, schwächer optimierender Compiler mit geringeren Laufzeitkosten Interpreter, Compiler, experimentell: unterschiedlich stark optimierende Compiler
Dynamische Optimierung einfache Heuristiken Profile durch Aufrufzähler, Methodenanalyse Profile durch Aufrufzähler, Methodenanalyse Optimierte Übersetzung einer Methode nach n-tem Aufruf

Abbildung A.2: Tabellarischer Vergleich verschiedener Implementierungen virtueller Maschinen.
Komponente IBM J2SE JDK 1.3 Productiona IBM Jalapeño1 Appeal JRockit 1.1.2a Intel ORP
Plattformen AIX, Win32, OS/2, OS/390, Linux-x86 AIX Win32, Linux-x86 Win32, Linux-x86
Garbage Collector generational (kopierend) mehrere (generational, inkrementell, kopierend) generational (incrementellb) generational (kopierend mit step + inkrementell2)
Allokation LAB   CAS LAB
Thread-Implementierung OS3 Zweistufig mit VM-eigenem Scheduler im user space Zweistufig mit VM-eigenem Scheduler im user space OS
Lock-Implementierung thin locks thin locks thin locks thin locks mit Metasperrenprotokoll
Ausführung Interpreter, optimierender Compiler kein Interpreter, 3 unterschiedlich optimierende Compiler kein Interpreter, unterschiedlich optimierende Compiler kein Interpreter, 2 unterschiedlich optimierende Compiler
Dynamische Optimierung   Profiling-Infrastruktur   Profile durch Aufrufzähler, Methodenanalyse

Abbildung A.3: Tabellarischer Vergleich verschiedener Implementierungen virtueller Maschinen.
Komponente Tycoon-2 Self 4.1.2  
Plattformen Linux, Solaris, HP-UX, Win32 Solaris-SPARC, Mac-OS  
Garbage Collector kopierend generational  
Allokation linear mit Speichersperre linear, nicht thread-safe  
Thread-Implementierung OS Scheduler im user space  
Sperr-Implementierung OS-Mutex im Objekt, nur für Exemplare designierter Klassen Implementierung im user space  
Ausführung Interpreter kein Interpreter, 2 unterschiedlich optimierende Compiler  
Dynamische Optimierung Globaler Methoden-Cache Profildaten aus PIC  




next up previous contents
Next: Sun JDK 1.2.2 Reference Up: No Title Previous: Zusammenfassung und Ausblick   Inhalt

2001-02-28