ホームページ  >  記事  >  ウェブフロントエンド  >  Nodejsでメモリを確認する方法

Nodejsでメモリを確認する方法

WBOY
WBOYオリジナル
2023-05-25 15:04:371948ブラウズ

Node.js は、最新のサーバーサイド プログラミング言語として、通常、大量のデータと同時リクエストを処理します。したがって、これらのアプリケーションの開発および運用のプロセスでは、アプリケーションが占有しているメモリを検出することが重要です。この記事では、Node.js でアプリケーションのメモリ使用量を確認する方法を説明します。

Node.js でメモリを使用する方法

Node.js は、ヒープ メモリとスタック メモリの 2 種類のメモリを使用します。

ヒープ メモリは、動的に割り当てられたオブジェクト (配列、オブジェクト、文字列など) が Node.js に保存される場所です。プログラムが実行されると、ヒープ メモリ内の領域が動的に適用されます。これは、ヒープ メモリのサイズが可変であるため、アプリケーションの操作やニーズに応じてサイズが変化することを意味します。

一方、スタック メモリは JavaScript 関数呼び出しを処理します。関数が呼び出されるたびに、その内部変数と引数がスタックに保存されます。関数の実行が完了すると、スタック フレームがポップされ、メモリ空間が解放されます。

Node.js のメモリ管理とガベージ コレクション

Node.js では、メモリ管理は V8 エンジンによって行われます。 V8 エンジンは Google が開発した JavaScript エンジンで、JavaScript コードのコンパイルと実行に使用されます。

Node.js では、V8 はヒープ メモリとガベージ コレクションの管理を担当します。ガベージ コレクションは、使用されなくなったメモリ領域を検出してクリアする自動プロセスです。 V8 のガベージ コレクターはマーク スイープ アルゴリズムに基づいており、プログラムの実行中に定期的にヒープ メモリをスキャンし、参照されているオブジェクトにマークを付けます。その後、参照されていないオブジェクトをクリアし、それらが占有しているスペースを解放します。

Node.js のメモリ チェック ツール

Node.js には、メモリ使用量のチェックに役立つツールが多数あります。

  1. process.memoryUsage()

Node.js では、 process.memoryUsage() メソッドは、現在のアプリケーションによって使用されているメモリを検出できます。このメソッドは、現時点でのプロセスのメモリ使用量を含むオブジェクトを返します。このメソッドによって返されるオブジェクトには次のプロパティがあります。

  • rss – 常駐セット サイズ、プロセスによって現在使用されている物理メモリの合計 (共有ライブラリによって占有されている部分を含む)。
  • heapTotal - ヒープの合計サイズ。未使用メモリを含む、現在ヒープに適用されている合計メモリを表します。
  • heap Used - 使用中のヒープ サイズ。現在ヒープ メモリに適用されている使用済みメモリを表します。 part
  • external - プロセスによって現在使用されているシステム ソケットの総数

process.memoryUsage() メソッドを使用してヒープ メモリの使用状況を定期的に確認し、アプリケーション メモリを理解できます。使用法とガベージコレクション。

次のコードは、 process.memoryUsage() メソッドを使用してメモリ使用量を確認する方法を示しています。

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

このコードを実行すると、現在のアプリケーションのメモリ使用量がコンソールに出力されます。

  1. v8.getHeapStatistics()

v8.getHeapStatistics() メソッドは、V8 エンジンでのヒープ メモリ割り当て、メモリのリサイクルなどに関する統計を含むオブジェクトを返します。 。 情報。

このメソッドによって返されるオブジェクトには、次のプロパティが含まれます。

  • total_heap_size — ヒープの合計サイズ
  • total_heap_size_executable — 実行可能コードのサイズ
  • total_physical_size — ヒープの合計サイズと共有ライブラリのサイズの合計
  • total_available_size — 割り当て可能なメモリ サイズ
  • used_heap_size — 割り当て可能なヒープ メモリのサイズ使用されています
  • heap_size_limit — ヒープ サイズの制限
  • malloced_memory — ヒープの外部に割り当てられたメモリの合計サイズ
  • peak_malloced_memory — これまでに発生した外部に割り当てられた最大のメモリ サイズ
  • does_zap_garbage — ガベージ コレクションを実行するかどうかを示すブール値

次のコードは、v8.getHeapStatistics() メソッドを使用してメモリ使用量を確認する方法を示しています:

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. heapdump

heapdump は、現在のメモリ ヒープのスナップショットを生成できる Node.js モジュールです。このモジュールは、アプリケーションのメモリ使用量をさらに分析するために、heapdump-YYYYMMDD_HHMMSS.heapsnapshot という名前のファイルを生成します。

heapdump モジュールを使用するには、npm を介してインストールする必要があります。ターミナルに次のコマンドを入力して、ヒープダンプ モジュールをインストールします。

npm install heapdump --save

次のコードは、ヒープダンプ モジュールを使用してメモリ スナップショットを生成する方法を示します。

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

上記のコードはスナップショットを生成します。現在のメモリ ヒープを取得し、指定したファイルに保存します。このファイルは、さまざまなツールを使用して分析し、アプリケーションのメモリ使用量を見つけることができます。

概要

この記事では、Node.js のメモリ管理とガベージ コレクションの基本と、いくつかのツールを使用してアプリケーションのメモリ使用量を表示する方法を紹介します。大規模なアプリケーションを開発および保守する場合、メモリの使用量を理解することが非常に重要です。上記のツールを使用すると、メモリの問題の可能性を時間内に発見して解決し、アプリケーションのパフォーマンスと安定性を確保できます。

以上がNodejsでメモリを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。