web-dev-qa-db-ja.com

node.js process.memoryUsage()の戻り値は何を表していますか?

公式ドキュメントから( source ):

process.memoryUsage()

バイトで測定されるNodeプロセスのメモリ使用量を記述するオブジェクトを返します。

var util = require('util');

console.log(util.inspect(process.memoryUsage()));

これにより以下が生成されます。

{ rss: 4935680, heapTotal: 1826816, heapUsed: 650472 }

heapTotalおよびheapUsedは、V8のメモリ使用量を参照します。

正確に何をするかrssheapTotal、およびheapUsedは?

些細な質問のように思えるかもしれませんが、私は探していて、今のところ明確な答えを見つけることができませんでした。

116
Mahn

この質問に答えるには、まずV8のメモリスキームを理解する必要があります。

実行中のプログラムは、常にメモリに割り当てられたいくつかのスペースを通じて表されます。このスペースはResident Setと呼ばれます。 V8は、Java Virtual Machineと同様のスキームを使用し、メモリをセグメントに分割します。

  • Code:実際に実行されているコード
  • Stack:ヒープ上のオブジェクトを参照するポインターとプログラムの制御フローを定義するポインターを含むすべての値タイプ(整数やブールなどのプリミティブ)を含む
  • Heap:オブジェクト、文字列、クロージャなどの参照型を保存するためのメモリセグメント。 enter image description here

質問に簡単に答えられるようになりました。

  • rss:常駐セットサイズ
  • heapTotal:ヒープの合計サイズ
  • heapUsed:実際に使用されたヒープ

Refhttp://apmblog.dynatrace.com/2015/11/04/understanding-garbage-collection-and-hunting- memory-leaks-in-node-js /

120
Tim Qian

[〜#〜] rss [〜#〜]常駐セットサイズ であり、プロセスのメモリの一部はRAM(スワップスペースまたはファイルシステムに保持されている部分とは対照的に)。

heapは、新しく割り当てられたオブジェクトが由来するメモリの部分です(CのmallocまたはnewのJavaScript)。

ヒープの詳細については、 Wikipedia をご覧ください。

37
Ray Toal