当前位置:网站首页>Un processus GC complet pour le principe JVM

Un processus GC complet pour le principe JVM

2022-06-23 05:21:00 Daydayup 囎

JVM De GC C'est la collecte des ordures,Principalement la récupération de la mémoire en tas.Cet article présente JVM Pour la première fois GC Comment est le processus,Posez d'abord la première question,Quel genre d'objet serait JVM Objectif du recyclage?

Un.、Algorithme d'analyse de l'accessibilité(GC Roots)

Il y a une sorte deCompteur de référence,Peut être utilisé pour déterminer le nombre de fois qu'un objet est référencé,Si le nombre de références est0,Le représentant peut être recyclé.

Cette mise en œuvre est relativement simple,Mais il n'y a rien à faire avec les références circulaires,Alors... Java AdoptéAlgorithme d'analyse de l'accessibilité.

C'est - à - dire déterminer si un objet est lié à GC Roots Les chemins entre ces objets peuvent atteindre,Si ce n'est pas possible,EtSans doute.Devenir un objet de recyclage,Objet jugé inaccessible pour être recyclable, il faut passer par le processus de marquage au moins deux fois,S'il n'y a toujours pas d'échappatoire à la possibilité de devenir un objet recyclable au cours de ces deux processus de marquage,Est essentiellement recyclable.

In Java Moyenne,Peut être utilisé comme GC Roots Les objets de:

  1. Pile de machines virtuelles(Tableau des variables locales)Objet référencé dans
  2. Propriétés statiques de classe dans la zone de méthode Objet référencé
  3. Constante dans la zone de la méthodeObjet référencé
  4. Pile de méthodes localesObjet référencé dans

2.、JVMStructure du tas dans

JVM Le tas peut être divisé en deux parties,Cénozoïque et gériatrique,L'échelle de taille est1:2,Comme suit:

Parmi eux,Le cénozoïque est divisé en Eden Régions et  Survivor Zone, Survivor La zone des survivants est divisée en deux morceaux de taille égale from Et to Zone.C'est JVM La structure du tas moyen et l'échelle par défaut des Parties , Bien sûr, ces proportions peuvent passer par JVM Paramètres pour ajuster.

2.1 Pourquoi le cénozoïque a - t - il été divisé en trois zones

Il est nécessaire d'introduire ici la nouvelle génération d'algorithmes de collecte des ordures ——Algorithme de réplication.Le coeur de l'algorithme est de diviser la mémoire disponible en deux morceaux de taille égale par la capacité, Une seule pièce par cycle de recyclage ,Quand ce morceau de mémoire sera épuisé,Copiez l'objet vivant sur un autre morceau, Puis videz l'espace mémoire utilisé .

  • Avantages: Pas besoin de penser à la fragmentation de la mémoire ;Efficacité élevée.
  • Inconvénients: Réduction de moitié de la capacité disponible ,Plutôt gaspillé.

【 Paramètres optimaux 】: Analyse fondée sur des données faisant autorité ,90%Les objets de la vie et de la mort,C'est pourquoi nous adoptons10% L'espace est utilisé comme zone d'échange , Parce que la zone d'échange doit avoir une quantité égale de deux , Par conséquent, la proportion d'allocation par défaut pour les trois régions du cénozoïque moyen utilisant l'algorithme de réplication est 8:1:1.

2.2 Distribution et recyclage des objets de la nouvelle génération

(1)En gros, Les nouveaux objets ont priorité sur Eden Répartition régionale;

(2)Quand Eden Quand il n'y a pas assez d'espace , Une fois lancé Minor GC;

(3)Minor GC Recyclage la nouvelle génération utilise une version améliorée de l'algorithme de recyclage de la réplication ,C'est - à - dire:

  • from Régions et to Deux zones d'échange dans la zone , Une seule de ces deux zones a des données
  • Adoption8:1:1 Taux d'allocation par défaut pour (-XX:SurvivorRatioPar défaut8,Représentant Eden Région et Survivor Échelle de taille de la zone)

2.3 Distribution et recyclage d'objets anciens

(1)Un objet de l'époque.En général Des objets de longue durée du cénozoïque . Voici un concept appelé Seuil d'âge, Chaque objet définit un compteur d'âge ,Une fois. Minor GC ( Dans la zone d'échange ) Après l'âge plus 1,Âge de l'objet atteint15Une fois Il sera promu à l'âge , Quand il n'y a pas assez d'espace Full GC. Bien sûr, ce paramètre peut encore passer par JVM Paramètres(-XX:MaxTenuringThreshold,Par défaut15)Pour ajuster.

(2)Les grands objets entrent directement dans la génération plus âgée.C'est - à - dire plus que Eden Espace régional, Ou plus d'une valeur de paramètre (-XX:PretenureSizeThreshold=30m,Aucune valeur par défaut).L'objectif est d'éviterEdenZone et deuxSurvivorUne grande quantité de réplication de mémoire se produit entre les zones.

(3) L'objet a été promu à l'âge avancé (Groupe).Détermination dynamique de l'âge:Si dans Survivor .La somme de toutes les tailles d'objets du même âge dans la zone est supérieure à Survivor La moitié de la taille de la zone,Les objets plus âgés ou égaux à cet âge peuvent entrer directement dans la génération plus âgée, Sans attendre l'âge de la promotion .

Trois、JVMCompletGCProcessus

Processus normal de l'objet :Eden Zone -> Survivor Zone -> Vieux temps.

CénozoïqueGC:Minor GC;Vieux tempsGC:Full GC,Que Minor GC Doucement10X.

【Résumé】: Pas assez de mémoire ,Qui déclencheGC,JVM Oui.“stop the world”,Impact grave sur le rendement.Minor GC Je ne peux pas l'éviter.,Full GC Évitez autant que possible..

【Mode de traitement】: Enregistrer le Journal des instantanés de la pile 、Analyse des fuites de mémoire、 Ajuster les paramètres de mémoire pour contrôler la fréquence de collecte des ordures , Choisir un collecteur d'ordures approprié, etc .

原网站

版权声明
本文为[Daydayup 囎]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/06/202206230323328931.html