J'ai configuré un gist pour afficher l'utilisation de la mémoire au fil du temps d'un petit programme qui diffuse un fichier à partir du disque.nodejs fs semble gourmand
La mémoire allouée comme rss
dans process.memoryUsage()
ne descend jamais. D'autres projets, je sais qu'un autre fichier lu sera capable de réutiliser une partie de cette mémoire, mais cette mémoire n'est jamais libérée. Je sais que lorsque d'autres processus se contentent de mémoire, le système d'exploitation peut prendre une mémoire sous-utilisée et l'écrire pour l'échanger, mais ce n'est qu'une solution temporaire (et cela pourrait entraîner un échec de ma machine pour pas de bonne raison).
Étant donné que cette 'fuite' n'est pas dans le tas javascript, je ne pense pas vraiment que cela a à voir avec la façon dont je diffuse ce fichier, mais je voudrais une confirmation. Y a-t-il quelque chose que je suis censé faire pour que cette mémoire soit libérée?
$ node -v
v0.10.20
Est-ce que c'est exactement le même fichier? –
Le GIST est un exemple arbitraire où il diffuse un seul fichier, mais mes projets réels téléchargent et écrivent/lisent de nombreux fichiers. – PagodaJosh
@PagodaJosh Ce n'est probablement pas si gourmand; le descripteur de fichier aurait dû être fermé (se lier à ''close'' pour savoir quand). Mais, le Garbage Collector dans V8 n'a probablement pas encore été exécuté pour libérer la mémoire utilisée par le flux. Pour moi, en streaming dans un fichier d'environ 330 Mo, l'utilisation de la mémoire diminue d'environ 45 à 50 secondes après '' end'' et '' close''. –