Maison  >  Article  >  Java  >  Quel est le modèle de mémoire JVM ?

Quel est le modèle de mémoire JVM ?

青灯夜游
青灯夜游avant
2019-11-23 16:25:113227parcourir

Cet article vous donnera une compréhension préliminaire du modèle de mémoire JVM. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Quel est le modèle de mémoire JVM ?

Modèle de mémoire informatique

Lorsque le programme est en cours d'exécution, le processeur obtient des données en accédant à la mémoire principale, mais avec le rapide développement du CPU, la vitesse d'accès au CPU devient de plus en plus élevée et le matériel ne peut pas répondre aux conditions du CPU, la plupart des mémoires ont ajouté un mécanisme de cache. Différents CPU ont des caches à plusieurs niveaux (généralement trois) correspondants lorsque le CPU récupère. données, il suivra d'abord le cache de premier niveau -La mémoire principale du cache de deuxième niveau et de troisième niveau est accessible en séquence, ce qui améliore la vitesse d'accès, mais en même temps, les données dans le cache des différents processeurs peut être différent, empêchant le processeur et la mémoire principale d'effectuer la synchronisation des données

Modèle de mémoire JAVA

Le modèle de mémoire JAVA (JMM) est conforme à la mémoire de l'ordinateur spécifications du modèle. En mettant en place des barrières de mémoire, il protège les différences d'accès entre les différents matériels et systèmes d'exploitation. Il s'agit d'un mécanisme et d'une spécification qui garantissent que les programmes Java peuvent obtenir un accès cohérent à la mémoire sur différentes plates-formes.

Cinq zones de mémoire principales

1. Compteur de programme

Chaque thread possède un compteur de programme, qui est utilisé pour identifier Le numéro de ligne du bytecode du programme du thread actuel. Lorsque la méthode Java est en cours d'exécution, le compteur de programme enregistre le numéro de ligne du fichier de bytecode. Lorsque la méthode native est en cours d'exécution, le contenu du compteur de programme est vide. leurs propres compteurs de programme exclusifs, privés au thread

2. Pile de machines virtuelles JAVA

Chaque méthode créera un cadre de pile lors de l'exécution, y compris le stockage des tables de variables locales. et piles d'opérations. Liens dynamiques, exportations de méthodes et autres informations. Le processus de chaque méthode appelée correspond au processus par lequel un cadre de pile est poussé dans la pile jusqu'à être retiré de la pile dans la pile de machine virtuelle.

La pile de machine virtuelle JAVA est principalement utilisée pour stocker les paramètres de méthode, les variables locales à l'intérieur de la méthode, les types de données chargés lors de la compilation et les types d'adresses de retour, qui sont privés du thread

3. Local La pile de méthodes

est similaire à la pile de machines virtuelles JAVA. La différence est que cette dernière sert les méthodes Java (bytecodes) exécutées par la machine virtuelle, tandis que la pile de méthodes locale sert les méthodes Java. les appels natifs appelés par la machine virtuelle, c'est-à-dire les services sous-jacents, sont généralement écrits en C ou C++

4 Heap

Le tas est la plus grande partie. de la zone mémoire chargée par la machine virtuelle et est utilisée pour stocker des instances d'objets, peut être stockée à des adresses mémoire discontinues, à condition que les adresses logiques soient continues. Il est divisé en nouvelle génération et ancienne génération. Le rapport de la nouvelle génération à l'ancienne génération est de 1:2 (peut être spécifié via le paramètre –XX:NewRatio)

5. zone

Également connue sous le nom de génération permanente, elle est utilisée pour stocker les informations de classe, les constantes et les variables statiques chargées par la machine virtuelle. C'est une zone partagée pour les threads. Elle a été abandonnée après JDK8 et. le métaespace a été utilisé à la place

Tutoriel recommandé : tutoriel 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