Maison  >  Article  >  Java  >  Quelle est la structure du bytecode de la JVM en Java ?

Quelle est la structure du bytecode de la JVM en Java ?

WBOY
WBOYavant
2023-04-22 15:55:08780parcourir

1. Nombre magique

Les quatre premiers octets de tous les fichiers .class sont des nombres magiques, et la valeur fixe du nombre magique est 0xCAFEBABE. Le nombre magique est placé au début du fichier et la JVM peut déterminer si le fichier est susceptible d'être un fichier .class en fonction du début du fichier. Si tel est le cas, les opérations ultérieures se poursuivront.

2. Numéro de version

Le numéro de version correspond aux 4 octets après le nombre magique. Les 2 premiers octets indiquent le numéro de version suivant et les 2 derniers octets indiquent le numéro de version principal.

Les octets après le numéro de version majeure sont les entrées du pool constant. Il existe deux types de constantes stockées dans le pool de constantes : les références littérales et symboliques. Les littéraux sont déclarés comme valeurs constantes finales dans le code, et les symboles font référence aux noms qualifiés globalement des catégories et des interfaces, aux noms et spécificateurs des champs, ainsi qu'aux noms et spécificateurs des méthodes. Le pool constant est divisé en deux parties : le compteur de pool constant et la zone de données du pool constant.

3. Pool constant

Les deux octets après la fin du pool constant décrivent si la classe est une classe ou une interface, et si elle est décorée avec des décorateurs Public, Abstract, Final et autres.

4. Indicateur d'accès

Les deux octets après la fin du pool de constantes décrivent si la classe est une classe ou une interface, et si elle est modifiée par des modificateurs tels que Public, Abstract et Final.

5. Le nom de la classe actuelle

Les deux octets après l'indicateur d'accès décrivent le nom complet de la classe actuelle. La valeur enregistrée par ces deux octets est la valeur d'index dans le pool de constantes. Selon la valeur d'index, le nom complet de cette classe peut être trouvé dans le pool de constantes.

6. Nom de la classe parent

Les deux octets après le nom de la classe actuelle décrivent le nom complet de la classe parent, comme ci-dessus, et enregistrent également la valeur d'index dans le pool constant.

7. Informations sur l'interface

Après le nom de la classe parent se trouve un compteur d'interface sur deux octets, qui décrit le nombre d'interfaces implémentées par la classe ou la classe parent. Les n octets suivants sont les valeurs d'index des constantes de chaîne pour tous les noms d'interface.

8. Table de champs

La table de champs est utilisée pour décrire les variables déclarées dans les classes et les interfaces, y compris les variables au niveau de la classe et les variables d'instance, mais n'inclut pas les variables locales déclarées dans les méthodes.

Quels sont les types de données de base de Java ?

Les types de données de base de Java sont divisés en :

1 Type entier, utilisé pour représenter le type de données des entiers.

2. Type à virgule flottante, un type de données utilisé pour représenter les décimales.

3. Type de caractère Le mot-clé du type de caractère est "char".

4. Le type booléen est le type de données de base qui représente les valeurs logiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer