Il mentionne l'algorithme GC et le rôle de chaque zone dans la zone du tas.
Il existe différents types d'algorithmes GC eux-mêmes. Les deux suivants sont les plus élémentaires.
Mark & Sweep est la norme en Java. Cependant, cela seul pose les problèmes suivants, et il est en fait étendu et mis en œuvre.
Si la zone inutile est libérée à plusieurs reprises, la zone vide devient inégale et rigide. En d'autres termes, le coût de traitement de la création d'un nouvel objet augmente.
Par conséquent, les algorithmes suivants sont combinés.
** C'est pourquoi il y a zone De et A zone dans la zone de tas. ** **
C'est ce qu'on appelle un balayage de marqueurs simultanés car il ajoute cet algorithme.
Il utilise un algorithme GC générationnel. En termes simples, un nouvel objet est placé dans la nouvelle zone, le GC est fréquemment appliqué à la nouvelle zone et les objets qui ont survécu après plusieurs GC sont considérés comme continuant à survivre et sont placés dans l'ancienne zone. Un algorithme appelé FullGC lors du déplacement et des anciens sont accumulés. Au lieu de faire Full GC à chaque fois, limitez la portée de GC et répartissez la charge de GC.
Référence: GC by generation
** C'est pourquoi il y a du nouveau et de l'ancien dans la zone de tas JVM. ** **
D'après le contenu jusqu'à présent, ce qui suit peut être compris.
La raison pour laquelle De et Vers sont séparés dans les zones Nouveau et Ancien est d'effectuer une copie pour éviter la fragmentation de la zone de tas.
La raison pour laquelle il y a du nouveau et de l'ancien dans la zone du tas est de limiter la zone ciblée pour GC et de répartir la charge de traitement. (La zone Eden dans New existe également parce que je souhaite supprimer l'objet nouvellement créé de la cible GC et le séparer)
Mécanisme de gestion de la mémoire du tas Java
Un algorithme appelé Garbage First Garbage Collection arrive ...? Garbage-First Garbage Collection
Recommended Posts