L'accès aux objets impliquera trois zones de mémoire : la pile Java, le tas Java et la zone de méthode.
Comme le code suivant :
Object objectRef = new Object();
En supposant que ce code apparaisse dans le corps de la méthode, la partie "Object objectRef" sera reflétée dans les variables locales de la pile Java en tant que référence les données de type apparaissent. La partie "new Object()" sera reflétée dans le tas Java, formant une mémoire structurée qui stocke toutes les valeurs de données d'instance du type Object. La longueur de cette mémoire dépend du type spécifique et de la disposition de la mémoire objet implémentée par. la machine virtuelle. Elle n'est pas corrigée. De plus, le tas Java doit également inclure des informations d'adresse permettant de trouver les données de ce type d'objet (telles que le type d'objet, la classe parent, l'interface implémentée, la méthode, etc.). Ces types de données sont stockés dans la zone de méthode.
Le type référence stipule uniquement une adresse de référence pointant vers l'objet dans la spécification de la machine virtuelle Java. Il ne définit pas la manière dont cette référence doit être localisée pour accéder à l'emplacement de l'objet dans le tas Java. différentes machines virtuelles Les méthodes d'accès implémentées par la machine peuvent être différentes. Il existe deux méthodes principales : l'utilisation de handles et de pointeurs directs.
La méthode d'accès au handle : La pile Java sera divisée en un morceau de mémoire car le pool de handles est stocké dans la référence, et le handle est stocké. contient les données d'instance d'objet et les données de type, les informations d'adresse spécifiques respectives.
Méthode d'accès au pointeur : la variable de référence stocke directement l'adresse de l'objet, et une partie de l'objet tas Java stocke les données de l'instance d'objet, et l'autre partie stocke les données de type objet.
Explication détaillée de la machine virtuelle Java
Compréhension approfondie de la machine virtuelle Java
Java Virtual Machine Learning - Mécanisme de chargement de classe
Java Virtual Machine Learning - Allocation et recyclage de la mémoire des objets