Maison  >  Article  >  Java  >  Modèle de mémoire d'entretien Java

Modèle de mémoire d'entretien Java

王林
王林avant
2020-12-08 15:30:131967parcourir

Modèle de mémoire d'entretien Java

Question d'entretien SF : Comprenez-vous le modèle de mémoire Java ?

Question d'entretien 360 : Distribution de la mémoire du programme, cinq parties

(Partage de vidéos d'apprentissage : Vidéo d'enseignement Java)

1. processus d'exécution du programme java

Modèle de mémoire dentretien Java

Le fichier de code source Java (suffixe .java) sera compilé en un fichier bytecode (suffixe .class) par le compilateur Java, puis utilisé par la JVM Le chargeur de classe charge les fichiers de bytecode de chaque classe une fois le chargement terminé, il est transmis au moteur d'exécution de la JVM pour exécution. Pendant tout le processus d'exécution du programme, la JVM utilisera un espace pour stocker les données et les informations associées nécessaires à l'exécution du programme. Cet espace est généralement appelé zone de données d'exécution, ce que nous appelons souvent la mémoire JVM. Par conséquent, la gestion de la mémoire dont nous parlons souvent en Java consiste à gérer cet espace (comment allouer et récupérer de l'espace mémoire).

(Recommandations pour des questions d'entretien plus connexes : questions et réponses d'entretien Java)

2. Quelles parties la zone de données d'exécution comprend :

Modèle de mémoire dentretien Java

Zone de méthode :

La zone de méthode est une zone de mémoire partagée par chaque thread. Elle est utilisée pour stocker les informations de classe, les constantes et les informations statiques qui ont été chargées par. la machine virtuelle Variables, code compilé par le compilateur juste à temps et autres données. Lorsque la zone de méthode ne peut pas répondre aux exigences d’allocation de mémoire, une exception OutOfMemoryError est levée.
La zone de méthode stocke la version de la classe, les champs, les méthodes, les interfaces et les pools de constantes. Le pool constant stocke les références littérales et symboliques. Les références aux symboles incluent : 1. Nom complet de la classe, 2. Noms et attributs des champs, 3. Noms et attributs des méthodes.

JVM Heap (Java Heap) :

Le tas Java est également une zone mémoire partagée par les threads. Il est créé au démarrage de la machine virtuelle et est géré par le. Machine virtuelle Java. La plus grande pièce de mémoire, principalement utilisée pour stocker les instances d'objets. Presque toutes les instances d'objets allouent de la mémoire ici. Notez que le tas Java est la zone principale gérée par le garbage collector, il est donc souvent appelé le tas GC. il se trouve dans le tas. Lorsqu'aucune mémoire n'est disponible pour l'allocation d'instance et que le tas ne peut pas être étendu, une exception OutOfMemoryError est levée.

Registre du compteur de programme :

Lorsque l'interpréteur de bytecode fonctionne, il sélectionne le prochain bytecode à exécuter en modifiant la valeur de ce compteur. Instructions, branches, boucles. , les sauts, la gestion des exceptions, la récupération de threads et d'autres fonctions de base doivent tous s'appuyer sur ce compteur pour être exécutés.
En multi-threading, afin de restaurer la position d'exécution correcte après le changement de thread, chaque thread doit avoir un compteur de programme indépendant. Chaque thread ne s'affecte pas et est stocké indépendamment. Par conséquent, cette mémoire est un thread privé. .

Piles de machines virtuelles (Java Virtual Machine Stacks) :

La pile de machines virtuelles Java est également privée de thread et son cycle de vie est le même que celui de la pile de machines virtuelles Java. fil de discussion. La pile de machine virtuelle décrit le modèle de mémoire d'exécution de la méthode Java : lorsque chaque méthode est exécutée, un cadre de pile est créé pour stocker les tables de variables locales, les piles d'opérandes, les listes chaînées dynamiques, les informations de sortie de méthode, etc. Le processus depuis l'appel jusqu'à la fin de l'exécution de chaque méthode correspond au processus allant de l'insertion d'un cadre de pile dans la pile de la machine virtuelle jusqu'à son extraction.

Piles de méthodes natives :

La pile de méthodes locales appartient à la zone de données privées du thread. Cette partie est principalement liée aux méthodes natives utilisées normalement par la machine virtuelle. , nous n'avons pas besoin de nous soucier de ce domaine.

(Recommandations associées : Tutoriel d'introduction à Java)

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