5.10 Garbage Collector
Dans les langages de bas niveau comme C ou C++, quand vous créez un objet, vous devez explicitement allouer la mémoire correspondante, puis la libérer dès que vous n'en avez plus besoin. JavaScript fonctionne très différemment : ce concept de gestion manuelle de la mémoire n'existe pas. Quand vous créez un nouvel objet, la mémoire lui est automatiquement attribuée par le moteur. Vous l'utilisez librement, puis vous l'oubliez : pas besoin d'écrire de code pour la désallouer.
Le rôle du garbage collector
Le moteur JavaScript intègre ce qu'on appelle un ramasse-miettes (garbage collector). Son travail est de détecter les variables et les constantes qui ne sont plus utilisées dans le programme, puis de libérer la mémoire qui leur avait été allouée. Cette opération a lieu en arrière-plan, sans que vous ayez à intervenir.
L'allocation et la désallocation se produisent automatiquement dans les coulisses, et vous n'avez aucun contrôle direct sur ce processus. Vous ne pouvez pas dire au garbage collector quand s'exécuter, ni quelles variables supprimer en priorité. Il s'appuie sur des algorithmes complexes (comme le mark-and-sweep) pour déterminer quels objets sont devenus inaccessibles, puis libère leur mémoire au moment opportun. Cette automatisation simplifie énormément le développement, mais demande de comprendre que des références oubliées (par exemple dans des écouteurs d'événements) peuvent empêcher le garbage collector de faire son travail et provoquer des fuites mémoire. On se retrouve dans la prochaine vidéo.