Cet article présente principalement les informations pertinentes sur l'explication détaillée de l'accès objet dans la machine virtuelle Java. Les amis qui en ont besoin peuvent se référer à
Explication détaillée de l'objet. l'accès dans la machine virtuelle Java
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 stack Java , apparaît comme une donnée de type référence. 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 Classe d'objet , en fonction du type spécifique et de la disposition de la mémoire de l'objet. implémentée par la machine virtuelle. Autrement, la longueur de cette mémoire n'est pas fixe. De plus, le tas Java doit également inclure des informations d'adresse qui peuvent trouver les données de ce type d'objet (telles que le type d'objet, la classe parent, l'interface implémentée, les méthodes, etc.). zone.
Le type de référence dans la spécification de la machine virtuelle Java stipule uniquement une adresse de référence pointant vers l'objet, et ne définit pas comment cette référence doit être localisée et accéder à l'emplacement de l'objet dans le tas Java, donc différent. les implémentations de machines virtuelles peuvent avoir différentes méthodes d'accès. 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 au fur et à mesure que le pool de handles est stocké dans la référence, et le descripteur contient les données d'instance d'objet et les informations d'adresse spécifiques respectives des données de type.
Méthode d'accès par pointeur : La variable de référence stocke directement l'adresse de l'objet, tandis qu'une partie de l'objet tas Java stocke les données d'instance d'objet, et le l'autre partie stocke les données de type objet.
Ces deux méthodes d'accès aux objets ont leurs propres avantages. Le plus grand avantage de l'utilisation de la méthode d'accès par handle est que la référence stocke une adresse de handle stable, qui n'a besoin que d'être. modifié lorsque l'objet est déplacé. Le pointeur de données d'instance dans le handle et la référence n'a pas besoin d'être modifiée. Le plus grand avantage de l'utilisation de la méthode d'accès par pointeur est qu'elle est rapide. Elle permet d'économiser le temps nécessaire au positionnement du pointeur. En ce qui concerne la machine virtuelle, elle utilise la deuxième méthode (accès direct par pointeur).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!