Node.js Управление памятью - PullRequest
1 голос
/ 25 января 2020

Я экспериментировал с Node.js v12.14.1. Когда модуль загружается с помощью require (), модуль кэшируется и загружается в память.

a. Как мы узнаем размер памяти? Я использовал приведенную ниже команду, чтобы понять, сколько памяти используется. Есть ли лучший подход?

 $ /usr/bin/time -l <cmd> 
        0.08 real         0.04 user         0.01 sys
  26722304  maximum resident set size     // Provides the max memory usage in bytes
         0  average shared memory size
         0  average unshared data size
         0  average unshared stack size
      6714  page reclaims
         0  page faults
         0  swaps
         0  block input operations
         0  block output operations
         0  messages sent
         0  messages received
         0  signals received
        94  voluntary context switches
       155  involuntary context switches

Приведенная ниже команда при запуске узла REPL показывает максимальное использование памяти в 21 МБ.

> $ /usr/bin/time -l node

При запуске программы, которая загружает только один модуль (например: https://www.npmjs.com/package/email-templates) имеет объем памяти 76 МБ.

var emailTemplates = require('email-templates');
$ /usr/bin/time -l node index.js

Мне известно, что интерпретатор зажигания вместе с TurboFan оптимизирует код, включая байт-код в меньший более оптимизированный байт-код и, наконец, в машинный код.

б. Это относится только к теплому / горячему коду, который часто выполняется? Оптимизированы ли загруженные модули каким-либо образом?

Моя цель - написать JavaScript быстрый, оптимизированный код с меньшим объемом памяти. Я читал статьи о написании хорошего кода (например, именованные функции меньшего размера, не смешивающие типы данных свойств объекта, использующие библиотеки обещаний вместо собственных обещаний и т. Д. c)

Любая помощь очень ценится.

...