Cet article vous apporte une introduction détaillée au processus de chargement des classes Java. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Le processus des fichiers Java depuis l'encodage jusqu'à l'exécution finale :
La machine virtuelle JVM charge les informations de classe dans le fichier .class dans la mémoire et l'analyse pour générer le fichier correspondant objet de classe. La JVM ne charge pas toutes les classes en mémoire dès le début, mais ne les charge que lorsqu'elle rencontre une classe qui doit être exécutée pour la première fois, et une seule fois.
Charger les fichiers de bytecode de classe à partir de diverses sources en mémoire via le chargeur de classe
JVM Trois choses à accomplir
Chargeur de classe
Le processus de fusion du code binaire de la classe Java dans l'état d'exécution de la JVM
Assurez-vous que le flux d'octets chargé est conforme aux spécifications de la machine virtuelle et ne provoquera pas d'erreurs de sécurité
Classification de vérification
Allouer de la mémoire pour les variables de classe (attention, pas les variables d'instance) et attribuer des valeurs initiales (les valeurs initiales par défaut de la machine virtuelle Java en fonction de différentes variables types)
Valeur initiale par défaut
Le processus de remplacement des références de symboles dans le pool constant avec références directes
Référence de symbole : une chaîne, mais cette chaîne donne des informations pertinentes qui peuvent identifier de manière unique une méthode, une variable ou une classe
Référence directe : peut être comprise comme une adresse mémoire, ou une quantité offset
Par exemple, appelez maintenant la méthode hello(), l'adresse de cette méthode est 1234567, alors hello est une référence symbolique, 1234567 est une référence directe
Pendant la phase d'analyse, la machine virtuelle Les références symboliques des noms de classe, des noms de méthodes et des noms de champs sont remplacées par des adresses mémoire ou des décalages spécifiques, c'est-à-dire des références directes à
aux variables de classe (variables ou instructions modifiées par static ) L'initialisation est le processus d'exécution du constructeur de classe
Processus d'initialisation
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!