Maison  >  Article  >  interface Web  >  Comprendre le mécanisme de récupération de place de js en quelques secondes

Comprendre le mécanisme de récupération de place de js en quelques secondes

hzc
hzcavant
2020-06-13 09:49:412922parcourir

Avant-propos


js dispose d'un mécanisme automatique de garbage collection. En d'autres termes, l'environnement d'exécution gère la mémoire utilisée lors de l'exécution du code.

Le principe du garbage collection js


L'environnement d'exécution trouvera les variables qui ne sont plus utilisées, puis libérera la mémoire qu'elles occupent.

Stratégie de collecte des ordures JS


Marquer clair

Lorsqu'une variable entre dans l'environnement, cette variable sera Marquée comme "entrant dans l'environnement", et lorsqu'une variable quitte l'environnement, elle est marquée comme "quittant l'environnement".

La façon de marquer les variables dépend de l'implémentation spécifique. Par exemple, vous pouvez utiliser une liste de variables « entrer dans l'environnement » et une liste de variables « quitter l'environnement » pour suivre quelles variables ont changé.

Les navigateurs qui ont utilisé la suppression des balises incluent IE, Firefox et Chrome.

Comptage de références

Il s'agit d'une stratégie de récupération de place moins courante, qui suit le nombre de fois où chaque valeur est référencée.

Lorsqu'une variable a est déclarée et qu'une valeur de type référence ({name:'cc'}) est attribuée à la variable, le nombre de références à cette valeur est 1. Si a ({name:'cc'} '}) '}) est affecté à une autre variable b, alors le nombre de références à cette valeur est augmenté de 1. Au contraire, si a reçoit la valeur {name:'xx'}, le nombre de références à la valeur {name:'cc'} est réduit de 1. Lorsque le nombre de références à la valeur {name:'cc'} devient 0, cela signifie qu'il n'y a plus moyen d'accéder à la valeur {name:'cc'}, donc l'espace mémoire occupé par celle-ci peut être recyclé. De cette façon, lorsque le garbage collector fonctionnera, l'espace mémoire occupé par la valeur {name:'cc'} sera recyclé.

Cette méthode a été utilisée par Netscape Navigator 3.0, mais il y a un sérieux problème : la référence circulaire.

function circleReferenceProbem(){
  let objectA = new Object()
  let objectB = new Object()

  objectA.someOtherObject = objectB
  objectB.anotherObject = objectA
}

Après avoir exécuté cette fonction, comme le nombre de références de ces deux valeurs de référence ne sera jamais 0, le garbage collector ne récupérera jamais l'espace mémoire qu'elles occupent.

Performances du garbage collector js


Parce que le garbage collector js effectue le garbage collection tous les deux cycles.

Si la quantité de mémoire allouée à la variable n'est pas importante, alors la charge de travail de recyclage du garbage collector ne sera pas importante. Cependant, lorsque la charge de travail du garbage collector est trop importante, des retards sont susceptibles de se produire.

Suggestions pour gérer la mémoire dans js


  • Utilisez le moins possible les variables globales

  • Effacez manuellement les références aux variables chaque fois que possible

Merci d'avoir lu !

Si vous avez besoin de communiquer sur WeChat, vous pouvez laisser un message !

Tutoriel recommandé : "Tutoriel JS"

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Composant graphique léger VueArticle suivant:Composant graphique léger Vue