2015-04-01 3 views
0

Когда я начинаю новый nodejs и типа process.memoryUsage(), он показываетраспределения памяти nodejs

> process.memoryUsage() { rss: 11296768, heapTotal: 7195904, heapUsed: 2964776 }

так nodejs использует память 11M и куча V8 использует уЮ из них.

Что еще потребляет оставшуюся память 11-7 = 4M, часть C++ nodejs? libuv? v8 сам?

Есть ли какие-либо методы или инструменты для просмотра распределения памяти?

ps: Мне не нужна node-heap/node-memwatch, чтобы обнаружить память в куче v8. Они в основном измеряют память, используемую js project (js-файлы). Я хочу знать память, используемую самим узлом. Какие части используют оставшиеся 4M, и сколько используется каждая часть.

ответ

1

V8 не сжимает кучу каждый раз, когда работает сборщик мусора. Это означает, что между ними может быть неиспользуемое пространство. Вот очень хромая диаграмма, чтобы показать, что может происходить под капотом.

------------------------------------------- 
|   |    |    | 
| used  | unused |  used | 
|   |    |    | 
------------------------------------------- 

Таким образом, общий размер кучи - это первый байт, выделенный для выделенного последнего байта. V8, вероятно, будет использовать «неиспользуемое» пространство в какой-то момент в будущем, но это не нужно.