Maison >interface Web >js tutoriel >Fuites de mémoire courantes en JavaScript
1. Variables globales
Les variables globales persistent tout au long de la durée de vie de l'application et sont rarement récupérées. Lorsque la portée des variables n'est pas appropriée, cela peut provoquer des fuites de mémoire accidentelles.
function myFunc() { globalVar = "I'm a memory leak!"; }
2. Nœuds DOM détachés
Les nœuds DOM supprimés peuvent rester en mémoire s'ils sont référencés en JavaScript, même lorsqu'ils ne sont plus affichés.
let element = document.getElementById("myElement"); document.body.removeChild(element); // Node removed but still referenced
3. Minuteries et rappels
setInterval et setTimeout conservent les références aux rappels et aux variables, ce qui peut provoquer des fuites de mémoire dans les applications de longue durée.
let intervalId = setInterval(() => { console.log("Running indefinitely..."); }, 1000); // Clear when no longer needed clearInterval(intervalId);
4. Fermetures
Les fermetures peuvent involontairement conserver des références à des variables de leurs fonctions externes, entraînant des problèmes de mémoire.
function outer() { let bigData = new Array(100000).fill("data"); return function inner() { console.log(bigData.length); }; }
Ici, l'intérieur conserve le BigData même lorsqu'il n'est plus nécessaire.
1. Minimiser les variables globales
Utilisez la portée locale (fonction ou bloc) pour les variables afin d'éviter une persistance inutile en mémoire.
2. Effacer les références aux nœuds DOM détachés
Assurez-vous que les variables faisant référence aux nœuds DOM supprimés sont définies sur null.
document.body.removeChild(element); element = null; // Clear the reference
3. Gérer les minuteries et les auditeurs d'événements
Effacez toujours les minuteries et supprimez les écouteurs d'événements lorsqu'ils ne sont plus nécessaires, en particulier dans les applications dynamiques d'une seule page.
let timer = setInterval(doSomething, 1000); // Clear when no longer needed clearInterval(timer);
4. Évitez les grandes fermetures lorsque cela est possible
Réduisez la portée des fermetures ou restructurez le code pour éviter de conserver inutilement de grandes structures de données.
J'espère que cela vous a été utile. Merci d'avoir lu. ?
Restons connectés ! Vous pouvez me trouver sur :
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!