La position actuelle:Accueil du site>JVM initial

JVM initial

2022-07-24 02:49:35Bo0o2

JavaUne caractéristique très importante de la langue est l'indépendance de la plateforme.Et utiliserJavaMachine virtuelle(JVM)Est la clé de la réalisation de cette caractéristique.JVMEst une spécification pour l'équipement informatique,C'est un ordinateur fictif.,Il est réalisé en simulant diverses fonctions informatiques sur un ordinateur réel..Il y avait trois grands types deJVM,
SunDe l'entrepriseHotSpot
BEADe l'entrepriseJRockit
IBMDe l'entrepriseJ9 JVM
Et puisSunEntreprises etBEALes entreprises sont toutesoracleAcquisitions,EtoracleAdoptionSunDe l'entrepriseHotSpotEtBEADe l'entrepriseJRockitDeux.JVML'essence moyenne s'est retirée. jdk1.8 DeJVM.
La figure ci - dessous montreJVMStructure de,Très important.,Surtout la zone d'exécution.

Zone de données d'exécution

1、Pile

JVMLe plus gros,Utilisé principalement pour stocker des instances d'objets et des tableaux,Presque toutes les instances d'objets allouent la mémoire ici.Partage de threads,Plusieurs tampons d'allocation privés thread sont divisés en interne(TLAB).Peut être situé dans un espace physiquement discontinu,Mais logiquement, c'est continu.
2、Pile de machines virtuelles

Chaque méthode est exécutée en créant un cadre de pile en même temps(Stack Frame)Utilisé pour stocker des tables de variables locales、Pile d'opération、Liens dynamiques、Exportation de la méthode et autres informations.Chaque méthode est appelée jusqu'à ce que le processus soit terminé,Correspond à un cadre de pile dans la pile de machines virtuelles de la pile à la pile.Thread Private,Le cycle de vie est compatible avec le thread.
3、Domaine méthodologique(Hors pile)

Appartient à la zone mémoire partagée,Stocke les informations de classe qui ont été chargées par la machine virtuelle、Constante、Variables statiques、Données telles que le Code compilé par le compilateur instantané.
4、Pile de méthodes locales

Pile de méthodes locales(Native MethodStacks)Le rôle de la pile de machines virtuelles est très similaire,La différence est que la pile de machines virtuelles exécute pour les machines virtuellesJava Méthodes(C'est le code byte.)Services,La pile de méthodes locales est utilisée pour les machines virtuellesNative Services méthodologiques.
5、Compteur de programmes

Compteur de programmes(Program CounterRegister)Est un petit espace mémoire,Son rôle peut être considéré comme un indicateur de numéro de ligne du code byte exécuté par le thread courant.Cette zone mémoire est la seule àJava Rien n'est spécifié dans la spécification de la machine virtuelle OutOfMemoryError Zone de situation.
6、Mémoire directe

Mémoire directe(Direct Memory)Ne fait pas partie de la zone de données d'exécution de la machine virtuelle,Pas du tout.JavaZone de mémoire définie dans la spécification de la machine virtuelle,Mais cette partie de la mémoire est également utilisée fréquemment,Et peut aussi causerOutOfMemoryError Anomalie.InJDK 1.4 Chine - SingapourNIO(New Input/Output)Catégorie,Introduit un canal basé sur(Channel)Et tampons(Buffer)DeI/OComment,Il peut être utiliséNativeLa Bibliothèque de fonctions alloue directement la mémoire hors tas,Et ensuite par un stockage dansJavaÀ l'intérieur de la pileDirectByteBuffer L'objet fonctionne comme une référence à cette mémoire.Cela améliore considérablement les performances dans certains scénarios,Parce qu'il a été évité dansJava Pile etNative Copier les données d'avant en arrière dans le tas.
Collection générationnelle de tas

JVM Il existe plusieurs algorithmes de collecte des ordures , Le plus classique d'entre eux est l'algorithme de collecte par génération , La priorité ici est de noter .
Génération permanente(Perm):Conservation primaireclass,method,fieldIsoobjet, La taille de l'espace , Selon le nombre de classes de chargement de démarrage du système , En général, le débordement de mémoire dans cette zone est un débordement au démarrage .java.lang.OutOfMemoryError: PermGen space
Vieux temps(Old): En général, les déchets sont recyclés plusieurs fois (GC) Objets non recyclés .
Cénozoïque(Eden):Objets nouvellement créés.
Cénozoïque(Survivor0):Après la collecte des ordures(GC)Après, Objets non recyclés .
Cénozoïque(Survivor1):Même chose.Survivor0Même chose.,Même taille d'espace,En même tempsSurvivor0EtSurvivor1Un seul est en service,Un est vide.
JavaLe tas est la principale zone de gestion des collecteurs d'ordures, Selon l'algorithme de collecte par génération , L'espace mémoire en tas peut continuer à être subdivisé en jeunes générations ,Vieux temps. Les jeunes générations peuvent à leur tour être divisées en EdenZone, Deux de taille égale From Survivor,To SurvivorZone.Par défautEdenRégions etSurvivor L'échelle de taille de la zone est 8:1:1. Lors de l'attribution de la mémoire à un objet nouvellement créé, assignez d'abord l'objet à EdenRégions etFrom SurvivorZone, Lors du recyclage immédiat ,Oui.EdenRégions etSurvivor Les objets vivants de la zone sont copiés à To SurvivorDans la zone,SiTo Survivor La taille de la zone ne peut pas contenir d'objets vivants , Les objets vivants seront affectés à la zone des personnes âgées .Dans l'ensemble, Les petits objets nouvellement créés seront placés dans la jeune génération , La plupart des objets de la jeune génération sont recyclés lors de la prochaine collecte des ordures , Les aînés stockent les objets de grande taille et les objets de longue durée .
Annexe:Concepts connexes

1、Types de base et de référence

JVMMoyenne,Les types de données peuvent être divisés en deux catégories::Types de base et de référence.Les variables du type de base enregistrent les valeurs originales,C'est - à - dire:: La valeur qu'il représente est la valeur elle - même ;Et la variable du type de référence stocke la valeur de référence.“Valeur de référence”Une référence représentant un objet,Pas l'objet lui - même.,L'objet lui - même est stocké à l'adresse indiquée par cette valeur de référence.
2、Pile et pile

 Stack est l'unit é d'exécution,Et le tas est l'unit é de stockage.InJavaUn thread correspond à une pile de threads,C'est facile à comprendre,Parce que la logique d'exécution des différents Threads est différente,Une pile de Threads séparée est donc nécessaire.Et heap est partagé par tous les Threads.Pile parce que c'est une unit é d'exécution, Donc les informations stockées à l'intérieur sont liées au fil courant (Ou procédure)Informations pertinentes.Y compris les variables locales、État de fonctionnement du programme、Valeur de retour de la méthode, etc; Et le tas ne stocke que les informations de l'objet .
La pile représente la logique de traitement,Et le tas représente les données. 
Il y a des objets dans le tas,La pile contient les types de données de base et les références d'objets dans le tas.
InJavaMoyenne,MainLa fonction est le point de départ de la pile,C'est aussi le point de départ du programme.
3、Type de référence

Les types de référence d'objet sont divisés en :Forte citation、Référence souple、Références faibles et virtuelles.
Forte citation:Ne sera pas recyclé. Est la référence générée par la machine virtuelle lorsque nous déclarons généralement que l'objet est , Dans un environnement fortement référencé , Lors de la collecte des ordures, il faut déterminer si l'objet courant est fortement référencé , Si elle est fortement citée ,Ne sera pas recyclé.
Référence souple:Assez de mémoire, Ne pas recycler ; Pas assez recyclé . Les références douces sont généralement utilisées comme cache pour . La différence avec les citations fortes est , Soft Reference in Waste Recycling , Les possibilités virtuelles déterminent si les références douces doivent être récupérées en fonction de la mémoire restante du système actuel . Si la mémoire restante est assez serrée , L'opportunité virtuelle récupère l'espace référencé par la référence douce ; Si la mémoire restante est relativement riche , Il n'y aura pas de recyclage .En d'autres termes,, La machine virtuelle se produit OutOfMemoryHeure, Il n'y a certainement pas de référence souple .
Faible référence:Sera recyclé. Les références faibles sont similaires aux références douces , Utilisé comme cache . Mais contrairement aux citations douces , Faible référence lors de la collecte des ordures , Ça doit être recyclé , Son cycle de vie n'existe donc que dans un seul cycle de collecte des ordures .

Mentions de copyright
Auteur de cet article [Bo0o2],Réimpression s’il vous plaît apporter le lien vers l’original, merci
https://fra.chowdera.com/2022/205/202207240249119840.html

Recommandé au hasard