Heim  >  Artikel  >  Web-Frontend  >  So überprüfen Sie den Speicher in NodeJS

So überprüfen Sie den Speicher in NodeJS

WBOY
WBOYOriginal
2023-05-25 15:04:371948Durchsuche

Node.js verarbeitet als moderne serverseitige Programmiersprache normalerweise große Datenmengen und gleichzeitige Anforderungen. Daher ist es bei der Entwicklung und dem Betrieb dieser Anwendungen von entscheidender Bedeutung, den von der Anwendung belegten Speicher zu ermitteln. In diesem Artikel wird erläutert, wie Sie die Speichernutzung Ihrer Anwendung in Node.js überprüfen.

So wird Speicher in Node.js verwendet

Node.js verwendet zwei Arten von Speicher: Heap-Speicher und Stapelspeicher.

Heap-Speicher ist der Ort, an dem dynamisch zugewiesene Objekte in Node.js gespeichert werden, z. B. Arrays, Objekte und Zeichenfolgen. Während Programme ausgeführt werden, beantragen sie dynamisch Speicherplatz im Heap-Speicher. Dies bedeutet, dass die Größe des Heap-Speichers variabel ist und daher je nach den Vorgängen und Anforderungen der Anwendung variieren kann.

Andererseits verarbeitet der Stapelspeicher JavaScript-Funktionsaufrufe. Bei jedem Aufruf einer Funktion werden ihre internen Variablen und Argumente auf dem Stapel gespeichert. Wenn die Ausführung der Funktion abgeschlossen ist, wird der Stapelrahmen geöffnet und der Speicherplatz freigegeben.

Node.js-Speicherverwaltung und Garbage Collection

In Node.js erfolgt die Speicherverwaltung durch die V8-Engine. Die V8-Engine ist eine von Google entwickelte JavaScript-Engine und wird zum Kompilieren und Ausführen von JavaScript-Code verwendet.

In Node.js ist V8 für die Verwaltung des Heap-Speichers und der Garbage Collection verantwortlich. Bei der Garbage Collection handelt es sich um einen automatisierten Prozess, der nicht mehr genutzten Speicherplatz erkennt und löscht. Der Garbage Collector von V8 basiert auf einem Mark-Sweep-Algorithmus. Während das Programm ausgeführt wird, scannt es regelmäßig den Heap-Speicher und markiert die referenzierten Objekte. Anschließend werden die nicht referenzierten Objekte gelöscht und der von ihnen belegte Speicherplatz freigegeben.

Tools zur Speicherprüfung in Node.js

Es gibt viele Tools in Node.js, die Ihnen bei der Überprüfung der Speichernutzung helfen können.

  1. process.memoryUsage()

In Node.js kann die Methode process.memoryUsage() den von der aktuellen Anwendung verwendeten Speicher erkennen. Diese Methode gibt ein Objekt zurück, das die Speichernutzung des Prozesses zu diesem Zeitpunkt enthält. Das von dieser Methode zurückgegebene Objekt hat die folgenden Eigenschaften:

  • rss – Resident Set Size, die Summe des aktuell vom Prozess verwendeten physischen Speichers (einschließlich des von gemeinsam genutzten Bibliotheken belegten Teils).
  • heapTotal – die Gesamtgröße des Heaps, stellt den Gesamtspeicher dar, der aktuell im Heap beantragt wird, einschließlich ungenutztem Speicher.
  • heapUsed – die verwendete Heap-Größe, stellt den verwendeten Teil des aktuell beantragten Heap-Speichers dar Gesamtzahl der derzeit vom Prozess verwendeten System-Sockets
  • Mithilfe der Methode „process.memoryUsage()“ können Sie die Heap-Speichernutzung regelmäßig überprüfen, um die Speichernutzung und die Speicherbereinigung der Anwendung zu verstehen.

Der folgende Code zeigt, wie Sie die Methode „process.memoryUsage()“ verwenden, um die Speichernutzung zu überprüfen:

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

Durch die Ausführung dieses Codes wird die Speichernutzung der aktuellen Anwendung an die Konsole ausgegeben. Die Methode

v8.getHeapStatistics()
  1. v8.getHeapStatistics() gibt ein Objekt zurück, das statistische Informationen zur Heap-Speicherzuweisung, Speicherrecycling usw. unter der V8-Engine enthält.

Das von dieser Methode zurückgegebene Objekt enthält die folgenden Eigenschaften:

total_heap_size – Die Gesamtgröße des Heaps
  • total_heap_size_executable – Die Größe des ausführbaren Codes
  • total_physical_size – Die Gesamtgröße des Heaps und die Summe der Größen der gemeinsam genutzten Bibliotheken
  • total_available_size – Verfügbar für die Größe des zugewiesenen Speichers
  • used_heap_size – Größe des verwendeten Heap-Speichers
  • heap_size_limit – Beschränkung der Heap-Größe
  • malloced_memory – Gesamtgröße des außerhalb des Heaps zugewiesenen Speichers
  • peak_malloced_memory – Der größte extern zugewiesene Speicher Größe, die jemals aufgetreten ist.
  • does_zap_garbage – Ein boolescher Wert, der angibt, ob eine Garbage Collection durchgeführt werden soll Statistiken auf der Konsole.
  • heapdump

heapdump ist ein Node.js-Modul, mit dem Sie einen Snapshot des aktuellen Speicherheaps erstellen können. Dieses Modul generiert eine Datei mit dem Namen heapdump-YYYYMMDD_HHMMSS.heapsnapshot zur weiteren Analyse der Speichernutzung der Anwendung.

Die Verwendung des Heapdump-Moduls muss über npm installiert werden. Geben Sie im Terminal den folgenden Befehl ein, um das Heapdump-Modul zu installieren:
    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`);
    }
  1. Der folgende Code zeigt, wie Sie mit dem Heapdump-Modul einen Speicher-Snapshot erstellen:
  2. npm install heapdump --save
Der obige Code generiert einen Snapshot des aktuellen Speicher-Heaps und speichert ihn in der angegebenen Datei. Diese Datei kann dann mit verschiedenen Tools analysiert werden, um die Speichernutzung der Anwendung zu ermitteln.

Zusammenfassung

In diesem Artikel werden die Grundlagen der Speicherverwaltung und Speicherbereinigung in Node.js vorgestellt und erläutert, wie Sie mit einigen Tools die Speichernutzung Ihrer Anwendung anzeigen können. Wenn wir große Anwendungen entwickeln und warten, ist es sehr wichtig, die Speichernutzung zu verstehen. Mithilfe der oben genannten Tools können wir mögliche Speicherprobleme rechtzeitig erkennen und lösen, um die Leistung und Stabilität der Anwendung sicherzustellen.

Das obige ist der detaillierte Inhalt vonSo überprüfen Sie den Speicher in NodeJS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn