Maison > Article > interface Web > Que signifie la fuite de mémoire js ? Introduction aux fuites de mémoire js
Le contenu de cet article porte sur ce que signifie la fuite de mémoire js ? L'introduction aux fuites de mémoire js a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer, j'espère qu'elle vous sera utile.
Fuite de mémoire signifie qu'un morceau de mémoire alloué ne peut pas être utilisé ou recyclé jusqu'à la fin du processus du navigateur.
Le ramasse-miettes analyse périodiquement les objets et compte le nombre d'autres objets qui ont des références à chaque objet. Si un objet a 0 référence (aucun autre objet n'y fait référence) ou si la seule référence à l'objet est circulaire, alors la mémoire de l'objet peut être récupérée.
Si le premier paramètre de setTimeout utilise une chaîne au lieu d'une fonction, cela provoquera une fuite de mémoire.
Fermeture, journal de la console, boucle (lorsque deux objets se réfèrent l'un à l'autre et se retiennent, une boucle se produira)
Méthode pour libérer de la mémoire : attribuer une valeur à "null
Situations provoquant des fuites de mémoire :
1. Fuites de mémoire causées par des variables globales inattendues
Cause : Les variables globales ne seront pas recyclées
Solution : Utiliser le mode strict.
2. Fuites de mémoire causées par les fermetures
Cause : Les fermetures peuvent maintenir des variables locales au sein d'une fonction, empêchant leur libération.
Solution : La fonction de gestionnaire d'événements. est défini en externe, touche la fermeture ou supprime la référence au DOM dans la fonction externe qui définit la fonction de gestionnaire d'événements
3 La référence de l'élément DOM n'est pas nettoyée
Raison : bien que supprimée ailleurs. , la référence DOM existe toujours dans l'objet
Solution : Supprimer manuellement
4. Minuterie ou rappel oublié
Cause : Il y a une référence au DOM dans le DOM. Appareil Même si le DOM est supprimé, la minuterie est toujours là, donc le DOM est toujours dans la mémoire
Solution : Supprimez manuellement la minuterie et le DOM
5. Il y a une fuite de mémoire causée par la référence
Cause : lorsque le ul li dans p obtient ce p, il fera indirectement référence à un certain li obtenu à ce moment-là, car p fait indirectement référence à li, même si li est effacé. , il est toujours en mémoire. , et tant que li n'est pas supprimé, son élément parent ne sera pas supprimé
Solution : supprimer manuellement Qing Kong
Recommandations associées :
Discussion détaillée de plusieurs situations de fuites de mémoire js_compétences javascript
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!