Maison >interface Web >Questions et réponses frontales >Comment vérifier la mémoire dans nodejs

Comment vérifier la mémoire dans nodejs

WBOY
WBOYoriginal
2023-05-25 15:04:371961parcourir

Node.js, en tant que langage de programmation moderne côté serveur, gère généralement de grandes quantités de données et des requêtes simultanées. Par conséquent, lors du processus de développement et d’exploitation de ces applications, il est crucial de détecter la mémoire occupée par l’application. Cet article explique comment vérifier l'utilisation de la mémoire de votre application dans Node.js.

Comment la mémoire est utilisée dans Node.js

Node.js utilise deux types de mémoire : la mémoire tas et la mémoire pile.

La mémoire tas est l'endroit où les objets alloués dynamiquement sont stockés dans Node.js, tels que des tableaux, des objets et des chaînes. Au fur et à mesure que les programmes s'exécutent, ils demandent dynamiquement de l'espace dans la mémoire tas. Cela signifie que la taille de la mémoire tas est variable et variera donc en fonction des opérations et des besoins de l'application.

D'un autre côté, la mémoire de pile gère les appels de fonctions JavaScript. Chaque fois qu'une fonction est appelée, ses variables internes et arguments sont enregistrés sur la pile. Lorsque la fonction termine son exécution, le cadre de pile est sauté et l'espace mémoire est libéré.

Gestion de la mémoire et garbage collection Node.js

Dans Node.js, la gestion de la mémoire est effectuée par le moteur V8. Le moteur V8 est un moteur JavaScript développé par Google et est utilisé pour compiler et exécuter du code JavaScript.

Dans Node.js, V8 est responsable de la gestion de la mémoire tas et du garbage collection. Le garbage collection est un processus automatisé qui détecte et efface l'espace mémoire qui n'est plus utilisé. Le garbage collector de V8 est basé sur un algorithme de balayage de marquage. Pendant l'exécution du programme, il analyse périodiquement la mémoire tas et marque les objets référencés. Ensuite, il efface les objets qui ne sont pas référencés et libère l'espace qu'ils occupent.

Outils de vérification de la mémoire dans Node.js

Il existe de nombreux outils dans Node.js qui peuvent vous aider à vérifier l'utilisation de la mémoire.

  1. process.memoryUsage()

Dans Node.js, la méthode process.memoryUsage() peut détecter la mémoire utilisée par l'application actuelle . Cette méthode renvoie un objet qui contient l'utilisation de la mémoire du processus à ce moment. L'objet renvoyé par cette méthode possède les propriétés suivantes :

  • rss – Resident Set Size, la somme de la mémoire physique actuellement utilisée par le processus (y compris la partie occupée par les bibliothèques partagées).
  • heapTotal - La taille totale du tas, représente la mémoire totale actuellement demandée dans le tas, y compris la mémoire inutilisée
  • heapUsed - La taille du tas qui a été utilisé , représente l'application actuelle pour la partie de la mémoire tas utilisée
  • external - Le nombre total de sockets système actuellement utilisés par le processus

Peut être accessible périodiquement à l'aide de la méthode process.memoryUsage(). Vérifiez l'utilisation de la mémoire du tas pour comprendre l'empreinte mémoire et le garbage collection de votre application.

Le code suivant montre comment utiliser la méthode process.memoryUsage() pour vérifier l'utilisation de la mémoire :

const used = process.memoryUsage();
for (let key in used) {
 console.log(`${key} ${Math.round(used[key] / 1024 / 1024 * 100) / 100} MB`);
}

L'exécution de ce code affichera l'utilisation de la mémoire de l'application actuelle vers le consoler. La méthode

  1. v8.getHeapStatistics()

v8.getHeapStatistics() renvoie un objet qui contient l'allocation de mémoire du tas sous le moteur statistique V8. informations sur le recyclage de la mémoire et d’autres aspects.

L'objet renvoyé par cette méthode contient les propriétés suivantes :

  • total_heap_size — La taille totale du tas
  • total_heap_size_executable — Le taille du code exécutable
  • total_physical_size — La taille totale du tas et la somme des tailles des bibliothèques partagées
  • total_available_size — La taille de la mémoire disponible pour l'allocation
  • used_heap_size — Taille de la mémoire du tas déjà utilisée
  • heap_size_limit — Limite de la taille du tas
  • malloced_memory — La taille totale de la mémoire allouée en dehors du tas
  • #🎜🎜 #peak_malloced_memory — La plus grande allocation externe jamais réalisée Taille de la mémoire
  • does_zap_garbage — Une valeur booléenne indiquant s'il faut effectuer un garbage collection
Le code suivant montre comment utilisez la méthode v8.getHeapStatistics() pour vérifier l'utilisation de la mémoire :

const v8 = require('v8');
const used = v8.getHeapStatistics();
for (let key in used) {
 console.log(`${key} ${Math.round(used[key] / 1024 / 1024 * 100) / 100} MB`);
}

L'exécution de ce code affichera des statistiques de tas sur la console.

    heapdump
heapdump est un module Node.js qui vous permet de générer un instantané du tas de mémoire actuel. Ce module génère un fichier nommé heapdump-YYYYMMDD_HHMMSS.heapsnapshot pour une analyse plus approfondie de l'utilisation de la mémoire de l'application.

L'utilisation du module heapdump doit être installée via npm. Entrez la commande suivante dans le terminal pour installer le module heapdump :

npm install heapdump --save

Le code suivant montre comment utiliser le module heapdump pour générer un instantané de mémoire :

const heapdump = require('heapdump');
heapdump.writeSnapshot((err, filename) => {
   console.log(`Heap dump written to ${filename}`);
});

Le code ci-dessus générera un instantané de l'instantané du tas de mémoire actuel et l'enregistrera dans le fichier spécifié. Ce fichier peut ensuite être analysé à l'aide de divers outils pour connaître l'utilisation de la mémoire de l'application.

Summary

Cet article présente les bases de la gestion de la mémoire et du garbage collection dans Node.js, et comment utiliser certains outils pour afficher l'utilisation de la mémoire de votre application. Lorsque nous développons et maintenons de grandes applications, il est très important de comprendre l’utilisation de la mémoire. L'utilisation des outils ci-dessus peut nous aider à découvrir et à résoudre d'éventuels problèmes de mémoire à temps pour garantir les performances et la stabilité des applications.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn