Что означают возвращаемые значения node.js process.memoryUsage()?
Из официальной документации (источник):
process.memoryUsage()
Возвращает объект, описывающий использование памяти процесса Nodeизмеряется в байтах.
var util = require('util'); console.log(util.inspect(process.memoryUsage()));
Это будет генерировать:
{ rss: 4935680, heapTotal: 1826816, heapUsed: 650472 }
heapTotal и heapUsed относятся к использованию памяти V8.
Точно, что означают rss, heapTotal и heapUsed?
Это может показаться тривиальным вопросом, но я искал, и до сих пор я не нашел четкого ответа.
Чтобы ответить на этот вопрос, сначала нужно понять схему памяти V8s.
Запустимая программа всегда представляется через некоторое пространство, выделенное в памяти. Это пространство называется Resident Set. V8 использует схему, аналогичную виртуальной машине Java, и делит память на сегменты:
- Код: фактический выполняемый код
- Stack: содержит все типы значений (примитивы, такие как integer или Boolean) с указателями, ссылающимися на объекты в куче и указателях, определяющие поток управления программой
- Куча: сегмент памяти, предназначенный для хранения ссылочных типов, таких как объекты, строки и блокировки.
Теперь легко ответить на вопрос:
- rss: размер резидентного набора
- heapTotal: общий размер кучи
- heapUsed: используется куча
RSS - это размер резидентного набора, часть памяти процесса, хранящаяся в ОЗУ (в отличие от пространства подкачки или части, хранящейся в файловая система).
Куча - это часть памяти, из которой будут вызываться вновь выделенные объекты (подумайте о malloc
в C или new
в JavaScript).
Вы можете узнать больше о куче Wikipedia.
Связанные вопросы
Похожие вопросы
Посмотрите другие вопросы по меткам node.js v8 или Задайте вопрос