Maison >Java >Javacommencer >Quelles sont les zones de données d'exécution dans JVM
Premier coup d'oeil à l'image :
tutoriel vidéo sur Java : cours Java
1. Le compteur de programme (PC)
est exclusif aux threads. Il s'agit d'un espace de mémoire plus petit et constitue l'indicateur de numéro de ligne du bytecode exécuté par le thread actuel. C'est la seule zone de la spécification de la machine virtuelle Java qui ne spécifie pas MOO (OutOfMemoryError).
2. La pile de machines virtuelles Java
est exclusive aux threads. Le cycle de vie est le même que celui des threads. Est le modèle de mémoire pour l’exécution des méthodes Java. L'exécution de chaque méthode crée un cadre de pile qui stocke les variables locales et les opérandes (références d'objet). L'espace mémoire requis pour les variables locales est alloué lors de la compilation. La taille du cadre de pile ne changera donc pas.
Il y a deux exceptions :
1) Si la profondeur de la demande de thread est supérieure à la profondeur de la pile, une StackOverFlowError sera levée.
2) Si la pile ne peut pas demander suffisamment de mémoire lors de l'expansion dynamique, un MOO sera lancé.
3. Heap
Le tas Java est partagé par tous les threads. Il est créé au démarrage de la machine virtuelle. Les instances et les tableaux d'objets sont stockés. La plus grande mémoire occupée. Il est divisé en nouvelle génération (zone Jeune) et ancienne génération (zone Vieille). La nouvelle génération est divisée en zone Eden et zone Servior. La zone Servior est divisée en zone d'espace De et en zone d'espace. Le rapport de mémoire entre la zone Eden et la zone Servior est de 8:1. Lorsque la mémoire étendue est supérieure à la mémoire disponible, un MOO sera généré.
4. Pile de méthodes locales
La pile de méthodes locales est exclusive aux threads. Semblable à la pile de machines virtuelles Java, mais au lieu de servir les méthodes Java (bytecode), elle sert les méthodes natives non Java. StackOverFlowError et MOO seront également générés.
5. Zone méthode
La zone méthode est partagée par tous les threads. Utilisé pour stocker les informations de classe, les constantes, les variables statiques et d'autres données chargées par la machine virtuelle, également appelées non-heap. Le domaine de la méthode est également appelé « génération permanente ». La GC est rarement réalisée dans ce domaine, mais cela ne veut pas dire qu'elle ne sera pas recyclée. Le but de cette zone de recyclage est principalement le recyclage du pool constant et le déchargement des types. Lorsque la demande de mémoire est supérieure à la mémoire réellement disponible, un MOO sera généré.
Articles recommandés liés à Java : Démarrer avec 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!