1. Magische Zahl
Die ersten vier Bytes aller .class-Dateien sind magische Zahlen und der feste Wert der magischen Zahl ist 0xCAFEBABE. Die magische Zahl wird am Anfang der Datei platziert, und die JVM kann anhand des Anfangs der Datei bestimmen, ob es sich bei der Datei wahrscheinlich um eine .class-Datei handelt. Ist dies der Fall, werden die nachfolgenden Vorgänge fortgesetzt.
2. Versionsnummer
Die Versionsnummer sind die 4 Bytes nach der magischen Nummer. , die letzten 2 Bytes zeigen die Hauptversionsnummer.
Die Bytes nach der Hauptversionsnummer sind die konstanten Pooleinträge. Im Konstantenpool werden zwei Arten von Konstanten gespeichert: Literale und symbolische Referenzen. Literale werden im Code als endgültige konstante Werte deklariert, und Symbole beziehen sich auf die global qualifizierten Namen von Kategorien und Schnittstellen, die Namen und Spezifizierer von Feldern sowie die Namen und Spezifizierer von Methoden. Der Konstantenpool ist in zwei Teile unterteilt: den Konstantenpoolzähler und den Konstantenpooldatenbereich.
3. Konstantenpool
Die zwei Bytes nach dem Ende des Konstantenpools beschreiben, ob die Klasse eine Klasse oder eine Schnittstelle ist, und ob es sich um Dekorationszeichen wie Public, Abstract und Final handelt.
4. Zugriffsflag
Die zwei Bytes nach dem Ende des Konstantenpools beschreiben, ob die Klasse eine Klasse oder eine Schnittstelle ist, und ob es sich um Public, Abstract, Final und andere Modifikatoren handelt.
5. Aktueller Klassenname
Die zwei Bytes nach dem Zugriffsflag beschreiben den vollständig qualifizierten Namen der aktuellen Klasse. Der von diesen beiden Bytes gespeicherte Wert ist der Indexwert im Konstantenpool. Entsprechend dem Indexwert kann der vollständig qualifizierte Name dieser Klasse im Konstantenpool gefunden werden.
6. Name der übergeordneten Klasse
Die zwei Bytes nach dem aktuellen Klassennamen beschreiben den vollständig qualifizierten Namen der übergeordneten Klasse, wie oben , save ist auch der Indexwert im Konstantenpool.
7. Schnittstelleninformationen
Nach dem Namen der übergeordneten Klasse steht ein Zwei-Byte-Schnittstellenzähler, der die von der Klasse implementierte Schnittstelle beschreibt Menge der übergeordneten Klasse. Die nächsten n Bytes sind die Indexwerte der String-Konstanten für alle Schnittstellennamen.
8, Feldtabelle
Feldtabelle wird verwendet, um in Klassen und Schnittstellen deklarierte Variablen zu beschreiben, einschließlich Variablen auf Klassenebene und Instanzvariablen. Innerhalb der Methode deklarierte lokale Variablen werden jedoch nicht berücksichtigt.
2. Gleitkommatyp, ein Datentyp, der zur Darstellung von Dezimalzahlen verwendet wird.
3. Das Schlüsselwort des Zeichentyps ist „char“.
4. Der boolesche Typ ist der grundlegende Datentyp, der logische Werte darstellt.
Das obige ist der detaillierte Inhalt vonWie ist die Bytecode-Struktur von JVM in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!