Maison  >  Article  >  interface Web  >  Que signifie la fuite de mémoire js ? Introduction aux fuites de mémoire js

Que signifie la fuite de mémoire js ? Introduction aux fuites de mémoire js

不言
不言original
2018-08-15 17:22:263815parcourir

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 :

JavaScript. Évitez les fuites de mémoire et les compétences en gestion de la mémoire_compétences javascript

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn