1. Présentation
Dans la zone des données d'exécution, le compteur de programme, la pile de machines virtuelles et la pile de méthodes locales sont tous créés et détruits avec le thread. .
Par conséquent, leur allocation de mémoire et leur recyclage sont déterministes, et ils sont recyclés à la fin de la méthode ou du thread. Le tas Java et la zone de méthode sont incertains. La taille des objets créés lors de l'exécution du programme est incertaine. La taille de la mémoire requise ne peut être connue que lorsque le programme est en cours d'exécution. 🎜>
2. "Algorithme de survie"
Pour déterminer si un objet est vivant, il existe deux algorithmes principaux : la méthode de comptage de références et l'algorithme d'analyse d'accessibilité
Méthode de comptage de références
, la valeur du compteur est incrémentée de 1, et l'expiration de la référence est décrémentée de 1. Si le compteur est à 0, cela signifie qu'il ne sera plus utilisé.
À partir de ce nœud racine, recherchez vers le bas. S'il n'y a pas de chaîne de référence reliant l'objet au GC ROOT (c'est-à-dire qu'il est inaccessible), il est utilisé. signifie que le L'objet n'est pas disponible
L'objet exposé dans la méthode
Objet de référence dans la méthode locale
À l'heure actuelle, l'algorithme d'analyse d'accessibilité est devenu l'algorithme principal. La raison en est que l'algorithme du compteur de références ne peut pas résoudre le problème des
objets se référençant les uns aux autres
Après avoir effectué une analyse d'accessibilité sur l'objet, on constate qu'aucune chaîne de référence n'y est connectée, il est donc marqué pour la première fois et effectuez un filtre, La condition de filtrage est de savoir si la méthode finalize() doit être exécutée. Lorsque l'objet ne couvre pas la méthode finalize ou que la méthode finalize a été appelée,
créera automatiquement un thread de finalisation de faible priorité pour exécuter la méthode finalize de ces objets, puis GC L'objet dans F-. QUEUE sera marqué une deuxième fois. Si l'objet ne peut pas s'échapper à ce moment, il sera recyclé.
Méthode finalize()La méthode finalize a été mentionnée à plusieurs reprises ci-dessus, veuillez faire attention, la méthode de finalisation de l'objet ne sera automatiquement appelée qu'une seule fois par le système. Il n'est pas recommandé d'utiliser cette méthode. Sa fonction peut être complétée par try-finally à la place
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!