Dans les études précédentes, tout le monde devait avoir entendu parler de la tête d'objet. Nous savons que les en-têtes d'objet peuvent être utilisés pour stocker des informations, mais de nombreuses personnes ne l'ont peut-être pas essayé sur des types de stockage spécifiques. Il est divisé en deux types : le stockage des données et le type de pointeur de l'objet lui-même. Ce dernier a relativement peu de contacts avec tout le monde. Nous présenterons les concepts séparément dans les articles suivants. Le contenu spécifique est le suivant.
1. L'en-tête de l'objet est principalement utilisé pour stocker deux informations.
Stocker des données sur le fonctionnement de l'objet lui-même
tapez le pointeur
2. Les données lorsque l'objet lui-même est en cours d'exécution comprennent principalement : le code de hachage, l'âge de génération du GC, l'indicateur d'état du verrouillage, le verrou détenu par le thread, l'ID du thread biaisé, l'horodatage biaisé, etc. La longueur de cette partie des données est respectivement de 32 bits et 64 bits dans les machines virtuelles 32 bits et 64 bits (les pointeurs compressés ne sont pas activés).
Le pointeur de type peut être utilisé pour déterminer de quelle classe cet objet est une instance, mais l'implémentation de la machine virtuelle n'a pas besoin de conserver le pointeur de type sur l'objet.
Voici les deux types de stockage d'en-têtes d'objet Java. Les amis qui n'y ont jamais été exposés peuvent faire des expériences pratiques sur ces deux stockages différents après le cours.