JavaScript Collecte des déchets

Dans ce chapitre, nous allons voir comment JavaScript gère sa mémoire. JavaScript est un langage unique, capable d'allouer automatiquement de la mémoire une fois les objets créés et de la libérer lorsqu'ils ne sont plus utilisés. En revanche, les langages de bas niveau nécessitent une détermination manuelle du moment dans le programme où la mémoire allouée n'est plus nécessaire et la libèrent. Alors, voyons ce qui se passe dans un langage de haut niveau comme JavaScript lorsque vous n'avez plus besoin de rien. Comment le moteur JavaScript le trouve et le nettoie.

Le Concept Principal

La Reachability est le concept principal de la gestion de la mémoire en JavaScript. Les valeurs qui sont accessibles et utilisables sont connues comme étant atteignables. Ci-dessous vous trouverez l'ensemble des valeurs de base atteignables:

Les valeurs ci-dessus sont appelées les racines.

Les autres valeurs sont connues comme étant atteignables lorsqu'elles sont accessibles à partir d'une racine par une chaîne de références ou une seule référence.

Considérons un objet dans une variable locale. Si cet objet a une propriété qui fait référence à un autre objet, cet objet est appelé accessible. Les références sont également accessibles.

En JavaScript, il existe un processus en arrière-plan, appelé un collecteur de déchets. Il est capable de surveiller tous les objets et de supprimer ceux qui sont devenus inaccessibles.

Pour une meilleure perception, consultez l'exemple ci-dessous:

Javascript object reference
// book has a reference to the object let book = { name: "Javascript" }; console.log(book);

Comme vous pouvez le voir, la référence à l'objet est représentée par la flèche. La variable globale "book" fait référence à l'objet. La propriété "name" stocke elle-même une primitive.

Au cas où la valeur du livre est réécrite, la référence sera perdue, comme le montre l'exemple ci-dessous:

Javascript object reference lost
// book has a reference to the object let book = { name: "Javascript" }; book = null; console.log(book);

Ainsi, l'objet devient inaccessible. Le collecteur de déchets jette les données, libérant la mémoire.

Un cas de deux références

Dans cette section, considérons que la référence a été copiée du livre à language comme ceci:

Javascript object a case of two reference
// book has a reference to the object let book = { name: "Javascript" }; let language = book; console.log(language);

Maintenant, faire la même chose ressemblera à ceci:

Javascript object reference lost
// book has a reference to the object let book = { name: "Javascript" }; let language = book; console.log(language); book = null; console.log(book);

L'objet sera toujours accessible via la variable globale language. Il est en mémoire. Après avoir réécrit le language, il peut être supprimé.

Algorithmes internes

L'algorithme principal de la collecte des déchets est connu sous le nom de "marquer-et-balayer". Régulièrement, certaines étapes de la collecte des déchets sont effectuées. Les voici :

  • Le collecteur prend les racines et les marque, les mémorisant.
  • Ensuite, il visite et marque toutes les références à partir d'elles.
  • L'étape suivante consiste à visiter les objets marqués, à marquer leurs références. Il n'est pas possible de visiter le même objet deux fois, car tous les objets visités sont mémorisés.
  • Le processus continue jusqu'à ce que chaque référence accessible soit visitée.
  • Tous les objets à l'exception des objets de marché sont supprimés.

Et, enfin, les objets qui n'ont pas pu être visités pendant le processus ci-dessus, sont considérés comme inaccessibles et vont être supprimés.

Ainsi, le processus décrit de la collecte des déchets fonctionne correctement. Mais, JavaScript comprend différentes optimisations pour les faire fonctionner encore mieux et plus rapidement. Parmi ces optimisations figurent la collecte générationnelle, la collecte incrémentale et la collecte en temps d'inactivité.

Résumé

La collecte des déchets est un processus qui est mis en œuvre automatiquement. Il ne peut être ni forcé ni empêché de quelque manière que ce soit.

Les objets peuvent être conservés en mémoire tant qu'ils sont accessibles.

Il est essentiel de savoir qu'être référencé n'est pas semblable à être accessible. Des algorithmes avancés de collecte des déchets sont réalisés par des moteurs modernes.

Heure du Quiz : Testez Vos Compétences!

Prêt à relever le défi de ce que vous avez appris ? Plongez dans nos quiz interactifs pour approfondir votre compréhension et renforcer vos connaissances de manière ludique.

Trouvez-vous cela utile?