
Typischerweise besitzen Java-VMs einen Just-In-Time-Compiler (JIT-Compiler), welcher den Java-Byte-Code in Maschineninstruktionen übersetzt. Ferner können Java-Klassen zur Laufzeit, beispielsweise aus JSPs, erzeugt werden und dann durch den Java-Compiler (javac) in Java-Byte-Code übersetzt werden. Zusammenfassend gibt es drei Stufen der Code-Erzeugung:
Andere Sprachen Java-Sourcen: java
Java-Sourcen Java-Byte-Code: byte
Java-Byte-Code Maschineninstruktionen: native
Die dafür aufgebrachte Zeit wird in Time java/byte/native aufsummiert.
Für den JIT-Compiler stehen detaillierte Informationen zur Verfügung. Kompilierte Methoden werden im so genannten Code-Cache abgelegt. Methoden lokaler Klassen werden im local Code Cache, kompilierte Methoden gemeinsamer Klassen (shared Classes) werden im shared Code-Cache abgelegt (vgl. Memory Management im VM Container). Werden während eines Dialogschrittes Methoden kompiliert, so wird die für die zugehörigen Kompilate benötigte Speichermenge in Code cache allocated local/shared abgelegt. Wird Speicher in den Code-Caches aufgrund von Dekompilationen, z.B. durch eine (shared) Garbage Collection verursacht, wieder freigegeben, dann ist dies in Code cache freed local/shared ersichtlich. Die Gesamtnutzgröße der Code-Caches wird am Ende eines Dialogschrittes in Code cache used local/shared abgelegt. Vor der Kompilation einer Methode schätzt der JIT-Compiler die benötigte Größe im Code-Cache. Die Summe der Fehlschätzungen wird in Code cache wrong prediction abgespeichert. Der zur Erstellung von Zwischendarstellungen (intermediate representation) maximal benötige Speicher ist in Code cache max. work ersichtlich.
Neben dem Speicherbedarf des JIT-Compilers werden die Kompilierungsversuche ( Count JIT compilation trial), die erfolgreichen Kompilierungen ( Count JIT succeed), die Wieder-Kompilierungsversuche ( Count JIT retry) sowie die entladenen Methoden ( Count JIT decompile) gezählt. Zusätzlich wird über die Wechsel zwischen interpretiertem Java-Byte-Code und durch den JIT-Compiler kompilierten Code Buch geführt ( Count native byte switch).
Eine Übersicht über die Darstellung der Daten der Code Generierung liefert die folgende Abbildung.
