J'essaie de me débarrasser de la fuite de mémoire, mais ma compréhension des choses est assez faible dans ce domaine et je n'ai personne à demander de l'aide à vous attendre les gars. Mon script tue la RAM du serveur et je n'arrive pas à comprendre ce qui ne va pas dans mon approche.Node.js recherche de fuite de mémoire
J'ai cette fonction:
function getPages(params){
gmail.users.messages.list(params, (err, resp)=>{
for (var message of resp.messages) {
message['ownerEmail'] = currentUser;
getMessage(message); // this does something with it later
var message = null;
}
if(resp.nextPageToken){
params.pageToken = resp.nextPageToken;
getPages(params);
} else {
// resolve end here...
}
})//gmail.users.messages.list
}//fetchPages
getPages(params);
Fondamentalement, il reçoit des messages de l'API et doit faire quelque chose par la suite. Il s'exécutera tant qu'il y aura plus de données à récupérer. (tant que nextPageToken existe en réponse).
Maintenant, je couru cette commande:
$ free -lm
total used free shared buff/cache available
Mem: 11935 1808 7643 401 2483 9368
Low: 11935 4291 7643
High: 0 0 0
Swap: 6062 0 6062
en tant que script est en cours d'exécution buff/cache est en constante augmentation.
- Qu'est-ce que la fonction buff/cache est réellement et comment est-elle liée à mon script Node?
- Comment gérer ce qui est mis en mémoire tampon/en cache et comment puis-je tuer/effacer ce genre de choses?
- Comment optimiser la fonction ci-dessus pour oublier tout ce qui est déjà traité?
- Comment puis-je m'assurer que le script n'utilise absolument aucune ressource une fois terminé? (J'ai même essayé
process.exit
à la fin du script) - Comment puis-je déboguer et surveiller l'utilisation de la RAM à partir de mon script Node.js?
Cette partie est correcte. Quand il atteint la fin des pages il ne fournira pas nextPageToken et le code du bloc 'else' sera exécuté ce qui pourrait avoir une méthode de sortie, et la fonction auto-exécution est dans le bloc' if' true – Kunok
@Kunok Pouvez-vous essayer nextTick avant d'appeler getPages et commencer la récursivité? Jetez un coup d'oeil ici: http://stackoverflow.com/questions/8112398/does-use-of-recursive-process-nexttick-let-other-processes-or-threads-work –
Permettez-moi de jeter un coup d'oeil à cela, sera répondre après la lecture – Kunok