Question d'entrevue: méthode de collecte des ordures JavaScript

Tout gagne WC 2022-01-15 03:39:06 阅读数:144

question entrevue thode collecte des

Principes:Le collecteur d'ordures est périodique(Périodicité)Identifier les variables qui ne sont plus utilisées,Puis libérez sa mémoire.

JavaScriptLe mécanisme de recyclage des déchets est simple:Trouver les variables qui ne sont plus utilisées,Puis Libérez la mémoire qu'il prend,Mais ce processus n'est pas en temps réel,Parce que c'est plus cher,Ainsi, le collecteur d'ordures fonctionne périodiquement à intervalles réguliers.
(1)Méthode de nettoyage des étiquettes

Quand une fonction déclare une variable,Marquez cette variable comme suit:“Accès à l'environnement”.Logiquement,,Ne jamais libérer la mémoire utilisée par les variables entrant dans l'environnement,Parce que tant que le flux d'exécution entre dans l'environnement approprié,Ils pourraient être utilisés.Et quand la variable quitte l'environnement,Marquer comme“Quitter l'environnement”.Le collecteur d'ordures marque toutes les variables stockées en mémoire au moment de l'exécution.Il supprime ensuite les variables de l'environnement et les balises des variables référencées par les variables de l'environnement(Fermeture).Les variables qui sont ensuite marquées seront considérées comme des variables à supprimer,Parce que les variables de l'environnement ne sont plus accessibles.Enfin,Le collecteur d'ordures a fini de nettoyer la mémoire,Détruire les valeurs marquées et récupérer l'espace mémoire qu'elles occupent.


function
test(){
var a = 10 ; //Marqué ,Accès à l'environnement
var b = 20 ; //Marqué ,Accès à l'environnement
}
test(); //Exécution terminée Après a、bEncore marqué hors de l'environnement,Recyclé.

(2)Compteur de référence

Le nombre de références est défini comme le nombre de fois où chaque valeur est référencée.Lorsqu'une variable est déclarée et qu'une valeur de type de référence lui est attribuée,Le nombre de références à cette valeur est1.Si la même valeur est attribuée à une autre variable,Le nombre de références à cette valeur plus1.Au contraire.,Si la variable contenant la référence à cette valeur obtient une autre valeur,Le nombre de références à cette valeur est réduit1.Lorsque le nombre de références à cette valeur devient0Heure,Cela signifie qu'il n'y a aucun moyen d'accéder à cette valeur à nouveau.,Pour récupérer la mémoire qu'il a utilisée.Voilà., Quand le collecteur d'ordures recommencera ,Il libère ces références pour0Mémoire utilisée par la valeur de.
Mais il est important que lorsque vous rencontrez une référence circulaire , Le nombre de références à la fonction ne serait pas 0, Pour ne pas être recyclé par le collecteur d'ordures ,Risque de fuite de mémoire.InIEParticipationCOMObjet,Il y aura des problèmes avec les références circulaires.


function
test(){
var a = {} ; //aLe nombre de références pour0
var b = a ; //a Nombre de références plus 1,Pour1
var c =a; //a Plus de références à 1,Pour2
var b ={}; //a Moins de références à 1,Pour1
}
版权声明:本文为[Tout gagne WC]所创,转载请带上原文链接,感谢。 https://javamana.com/2022/01/202201080610470763.html