Maison  >  Article  >  Java  >  Explication détaillée de la machine virtuelle Java

Explication détaillée de la machine virtuelle Java

黄舟
黄舟original
2017-03-18 17:52:072398parcourir


1. La structure principale de JVM est la suivante :




2. Introduction aux fonctions de chaque zone


1), Zone de méthode :

(1) Utilisé pour stocker les informations de classe chargées par la machine virtuelle, les constantes , statiques variables , etc., sont des zones de mémoire partagées par chaque thread  ; >

(2) La valeur minimale par défaut est de 16 Mo et la valeur maximale est de 64 Mo. Vous pouvez limiter la taille de la zone de méthode via les paramètres -XX:PermSize et -XX:MaxPermSize

(3). ) Il existe également une partie de la zone de méthode qui est

Pool de constantes d'exécution qui est principalement utilisée pour stocker les littéraux et les symboles générés lors de la compilationréférences. Les constantes peuvent également être générées au moment de l'exécution, telles que. la méthode interne de String;

(4) Comme le tas Java, il ne nécessite pas de mémoire continue et peut choisir une taille fixe ou extensible. Vous pouvez également choisir de ne pas implémenter le garbage collection.

2), pile :

(1) La pile de machines virtuelles Java est

thread privée, et le cycle de vie est le même que Les fils sont les mêmes.

(2) Lorsque chaque méthode est exécutée, un cadre de pile est créé en même temps, qui est utilisé pour stocker les tables de variables locales, les piles d'opérations, les liens dynamiques, les sorties de méthode et d'autres informations. L'exécution de chaque méthode correspond au frame de pile

entrant et sortant de la pile.

(3) La table de variables locales dans la pile de machines virtuelles JVM stocke divers

types de données de base connus au moment de la compilation. L'espace requis pour la table de variables locales est alloué au moment de la compilation.

(4) Le cadre de pile est la structure de données de base pendant l'exécution de la méthode.

3), Pile de méthodes natives :

(1) La pile de méthodes locales sert les méthodes natives utilisées par la machine virtuelle JVM.

4), Heap :

(1) La plus grande pièce de mémoire gérée par la machine virtuelle Java.

(2) Le tas Java est une zone partagée par tous les threads et est créée au démarrage de la machine virtuelle.

(3) Le seul but de la zone mémoire est de stocker les instances d'

objet Toutes les instances d'objet et les tableaux allouent de la mémoire sur le tas.

(4) Le tas Java est la zone mémoire principalement gérée par le mécanisme de garbage collection JVM. Le tas Java peut se trouver dans un espace mémoire discontinu dans la mémoire.

5), compteur de programme :

(1) Un espace mémoire relativement petit, sa fonction peut être considérée comme l'indication du numéro de ligne du bytecode exécuté par le thread actuel Compteur

(2) Lorsque l'interpréteur de bytecode fonctionne, il modifie la valeur de ce compteur pour sélectionner la prochaine instruction de bytecode à exécuter, branche, boucle , saut, Gestion des exceptions, la récupération de thread, etc. doivent tous s'appuyer sur le compteur du programme.

6), pool de constantes d'exécution :

(1) Le pool de constantes d'exécution fait partie de la zone de méthode.

(2) En plus de la version de la classe, des champs, de la méthode interface description et d'autres informations dans le fichier Class, il existe également un pool constant pour le stockage Divers les littéraux et les références de symboles générés lors de la compilation seront stockés dans le pool de constantes d'exécution dans la zone de méthode après le chargement de la classe

.

7), mémoire directe :

Depuis que Java a introduit NIO et introduit la méthode IO du canal et du tampon, vous pouvez appeler la méthode native pour allouer directement hors tas mémoire Cette mémoire hors tas est une mémoire locale et n'affectera pas la taille de la mémoire tas.

Articles connexes :

Compréhension approfondie de la machine virtuelle Java

Apprentissage de la machine virtuelle Java - mécanisme de chargement de classe

Java Virtual Machine Learning - Allocation et recyclage de la mémoire des objets

Java Virtual Machine Learning - Accès aux objets

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn