Maison  >  Article  >  Java  >  Zone de données d'exécution Java d'apprentissage JVM

Zone de données d'exécution Java d'apprentissage JVM

零下一度
零下一度original
2017-06-01 10:32:381458parcourir

1. Compteur de programme

L'indicateur du numéro de ligne du bytecode exécuté par le thread actuel.

2. La pile de machines virtuelles Java

est privée de thread et a le même cycle de vie que le thread. Utilisé pour stocker la table locale variable , la pile d'opérandes, la liste chaînée dynamique, la sortie de méthode et d'autres informations .

Contenu de stockage de la table de variables locales :

  • Types de données de base (booléen, octet, char, court, int, flottant, long, double)

  • Référence d'objet (différente de la référence de symbole, qui est stockée dans le pool de constantes)

  • Type returnAddress (pointant vers l'adresse d'une instruction de bytecode)

Les données de 64 bits de long et de type double occupent 2 espaces de variables locales (emplacements), et le reste occupe 1 emplacement.

Deux exceptions :

  • StackOverflowError : La profondeur de pile demandée par le thread > la profondeur autorisée par la machine virtuelle

  • OutOfMemoryError : Impossible de demander suffisamment de mémoire lors de l'expansion dynamique

3. La pile de méthodes natives

est similaire à la pile de machines virtuelles, la différence est que la pile de méthodes natives sert. Les méthodes natives et la pile de machines virtuelles servent les méthodes Java.

4. Java Heap (Java Heap)

est partagé par tous les threads et stocke instances d'objets et tableaux .

La zone principale gérée par le garbage collector, également appelée "GC Heap (Garbage Collected Heap)"

Comprend la nouvelle génération (Eden space, From Survivor space, To Survivor space) et le ancienne génération.

Peut être divisé en plusieurs tampons d'allocation privés de thread (Thread Local Allocation Buffer, TLAB).

Cela peut être physiquement discontinu mais logiquement continu.

Extensible : Contrôles -Xmx et -Xms. -Taille maximale de la mémoire du tas Xmx, -Taille de la mémoire du tas initiale Xms.

Lorsqu'il n'y a pas de mémoire libre dans le tas pour terminer l'allocation de l'instance et qu'elle ne peut plus être étendue - OutOfMemoryError

Zone de méthode (alias Non-Heap)

est également le partage de tous les threads, utilisé pour stocker les informations de classe, les constantes, les variables statiques, le code compilé par le compilateur juste à temps et d'autres données qui ont été chargées par la machine virtuelle.

est aussi appelée « Génération Permanente », mais elle n'est pas essentiellement équivalente.

La génération permanente a une limite supérieure de -XX:MaxPermSize.

6. Le pool de constantes d'exécution

fait partie de la zone des méthodes.

7. Mémoire directe

La classe NIO (New Input/Output) nouvellement ajoutée au JDK1.4 introduit une méthode basée sur la méthode Channel et Buffer I/O, elle peut utiliser le Nativebibliothèque de fonctions pour allouer directementde la mémoire hors tas. Il n'est pas limité par la taille du tas Java (-Xmx), ce qui peut entraîner une somme de chaque zone de mémoire supérieure à la limite de mémoire physique, provoquant une erreur OutOfMemoryError lors de l'expansion dynamique.

Résumé :

  • Les trois zones mémoire 1, 2 et 3 sont privées à chaque thread

  • 4 et 5 sont Le

  • 6 commun à tous les threads fait partie de 5

  • 7 ne fait pas partie de la zone de données d'exécution de la machine virtuelle, mais appartient à la zone mémoire de la machine virtuelle Autre mémoire physique en plus

[Recommandations associées]

1. Présentation de deux exemples de code pour calculer le temps d'exécution de Java.

3.

Gestion des transactions Java apprentissage d'un exemple de code JDBC détaillé

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