MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Suppression d'objets Javascript volumineux lorsque le processus manque de mémoire

delete en javascript n'est PAS utilisé pour supprimer des variables ou libérer de la mémoire. Il est UNIQUEMENT utilisé pour supprimer une propriété d'un objet. Vous pouvez trouver cet article sur le delete opérateur une bonne lecture.

Vous pouvez supprimer une référence aux données contenues dans une variable en définissant la variable sur quelque chose comme null . S'il n'y a pas d'autres références à ces données, cela les rendra éligibles pour la récupération de place. S'il existe d'autres références à cet objet, il ne sera pas effacé de la mémoire tant qu'il n'y aura plus de références (par exemple, votre code n'aura aucun moyen d'y accéder).

En ce qui concerne la cause de l'accumulation de mémoire, il existe un certain nombre de possibilités et nous ne pouvons pas vraiment voir suffisamment de votre code pour savoir quelles références pourraient être conservées qui empêcheraient le GC de libérer des éléments.

S'il s'agit d'un seul processus de longue durée sans interruption d'exécution, vous devrez peut-être également exécuter manuellement le ramasse-miettes pour vous assurer qu'il a la possibilité de nettoyer les éléments que vous avez publiés.

Voici quelques articles sur le suivi de votre utilisation de la mémoire dans node.js :http://dtrace.org/blogs/bmc/2012/05/05/debugging-node-js-memory-leaks/ et https://hacks.mozilla.org/2012/11/tracking-down-memory-leaks-in-node-js-a-node-js-holiday-season/ .