Руководство: Как проверить использование памяти в Node.Js

  1. Что вы узнаете
  2. Как Node.js организует память?
  3. Запрос кучи Node.js
  4. Тестирование использования reverse () памяти для небольшого массива
  5. Тестирование reverse () использования памяти для большого массива
  6. Куда пойти отсюда

Хотя все, похоже, согласны с тем фактом, что преждевременная оптимизация может иметь пагубные последствия, вы должны заботиться о производительности в любом случае: в самом простом случае вам может потребоваться узнать, сколько памяти использует данный процесс Node.js во время его выполнения.

В этом посте мы увидим, как использовать встроенный метод Node.js для получения информации об использовании памяти любым заданным процессом.

Отказ от ответственности: это не является подробным объяснением механизма управления памятью Node.js, на самом деле у меня есть несколько советов для вас в конце статьи.

Что вы узнаете

  1. Как получить информацию о памяти процесса Node.js
  2. Как Node.js организует память

Требования

Для того, чтобы следовать, вам нужно базовое понимание Javascript и Node.js

Node.js можно скачать с официального сайта, установить через менеджер пакетов или даже лучше через Nodesource если ваш дистрибутив Linux не поставляется с последней версией Node.

Как Node.js организует память?

Ну, одного поста в блоге будет недостаточно, чтобы объяснить все механизмы: на данный момент вы должны быть обеспокоены кучей, поэтому давайте начнем с разбора основ.

Я сказал куча ?? Да, сэр: первое, с чем вы будете связываться, запрашивая использование памяти Node.js, - это куча .

Куча - это сегмент памяти, используемый для хранения объектов, строк и замыканий. Здесь происходит вся магия.

Хотя куча является частью чего-то большего: работающий процесс Node.js хранит всю свою память в резидентном наборе . Вы можете думать об этом как о большой коробке, которая содержит еще несколько коробок. Резидентный набор содержит также фактический код Javascript (внутри сегмента кода ) и стек , где находятся все переменные. Надеемся, что следующая иллюстрация прояснит концепцию:

Хотя все, похоже, согласны с тем фактом, что преждевременная оптимизация может иметь пагубные последствия, вы должны заботиться о производительности в любом случае: в самом простом случае вам может потребоваться узнать, сколько памяти использует данный процесс Node

Иллюстрация организации памяти Node.js

Звучит сложно? На данный момент нам нужно сосредоточиться только на куче, поэтому не беспокойтесь, если вы не можете понять всю терминологию прямо сейчас!

Запрос кучи Node.js

Мы знаем, что такое Resident Set, и мы также знаем, что куча - это то, что мы ищем: теперь нам нужно выяснить, сколько кучи используется данным процессом Node.js. Но как нам получить доступ к куче?

С процессом ! процесс является глобальным объектом Node.js, который содержит информацию о текущем процессе Node.js и предоставляет именно то, что мы искали: метод memoryUsage () .

memoryUsage возвращает объект с различной информацией: rss , heapTotal , heapUsedexternal ):

  • rss обозначает Resident Set Size, это общая память, выделенная для выполнения процесса
  • heapTotal - это общий размер выделенной кучи
  • heapUsed - фактическая память, используемая во время выполнения нашего процесса.

Вооружившись знаниями, мы готовы увидеть несколько примеров.

Тестирование использования reverse () памяти для небольшого массива

В нашем первом примере мы увидим, сколько памяти используется очень простым методом Javascript: reverse () . reverse - это метод массива: он принимает массив и обращает его содержимое.

Создайте новый файл с именем reverse_node.js:

const arr = [1, 2, 3, 4, 5, 6, 9, 7, 8, 9, 10]; arr.reverse (); const used = process.memoryUsage (). heapUsed / 1024/1024; console.log (`Скрипт использует приблизительно $ {Math.round (used * 100) / 100} MB`);

Теперь, если вы запустите этот скрипт, вы должны увидеть следующий вывод:

Этот скрипт использует примерно 3,6 МБ памяти

В приведенном выше примере я выбрал свойство heapUsed из process.memoryUsage (), но если вы запустите сам process.memoryUsage (), у вас будет доступ к другим свойствам, перечисленным в предыдущем разделе. Например, запустив:

const arr = [1, 2, 3, 4, 5, 6, 9, 7, 8, 9, 10]; arr.reverse (); const used = process.memoryUsage (); for (пусть введено используется) {console.log (`$ {key} $ {Math.round (используется [ключ] / 1024/1024 * 100) / 100} МБ`); }

Вы увидите следующий вывод:

rss 25,63 МБ heapTotal 5,49 МБ heapUsed 3,6 МБ внешняя 0,01 МБ

Теперь, это не самый точный способ измерения потребления памяти в Node.js, но, по крайней мере, вы сделаете свою работу. При работе с инструментами нужно позаботиться о большем, особенно вы должны учитывать сборщик мусора Node.js. Кроме того, с memoryUsage у вас есть, по крайней мере, представление о том, сколько памяти занимает данный скрипт / процесс.

Давайте продолжим с другим примером!

Тестирование reverse () использования памяти для большого массива

Как насчет тестирования очень большого массива сейчас?

Создайте новый файл в каталоге вашей игровой площадки с именем reverse_node_bigArray.js:

let arr = Array (1e6) .fill («некоторая строка»); arr.reverse (); const used = process.memoryUsage (). heapUsed / 1024/1024; console.log (`Скрипт использует приблизительно $ {used} MB`);

Array (1e6) создает пустой массив со свойством длины 1 миллион. Затем метод fill () заполняет каждую позицию массива строкой. На данный момент у нас есть массив с 1 миллионом элементов в нем.

Запустив новый скрипт, вы должны увидеть следующий вывод:

Этот скрипт использовал примерно 11,23 МБ

Все станет интереснее, если мы увеличим размер нашего массива. В скрипте измените следующую строку:

let arr = Array (1e6) .fill («некоторая строка»)

в

let arr = Array (1e8) .fill («некоторая строка»)

Array (1e8) создает пустой массив со свойством длины 100 миллионов. Опять же, метод fill () заполняет каждую позицию массива строкой. На данный момент у нас есть массив со 100 миллионами элементов, и, запустив скрипт снова, вы увидите, как увеличивается использование памяти:

Этот скрипт использует примерно 1278,83 МБ

Это действительно интересно, верно? Отныне вы сможете измерить, сколько памяти использует процесс Node.js. Проверьте свой код и посмотрите, сможете ли вы оптимизировать некоторые функции!

Куда пойти отсюда

Мы видели, как измерить использование памяти процессом Node.js. Имейте в виду, что для наиболее распространенных потребностей будет достаточно метода memoryUsage (), но если бы вы исследовали утечку памяти в приложении Node.js, вам потребовалось бы нечто большее.

Для начала предлагаю посмотреть, как работает сборка мусора в v8. Вот отличная рецензия: http://jayconrod.com/posts/55/a-tour-of-v8-garbage-collection

Устранить утечку памяти в Node.js непросто, но не бойтесь, есть много доступных библиотек: memwatch-некст это отличная отправная точка, и это стоит посмотреть.

Наконец, если вы хотите подняться, есть также несколько коммерческих инструментов, но в любом случае, понимание того, как работает сборка мусора в Node.js, действительно важно. Начните с основ, а затем переключитесь на инструмент мониторинга, когда вы почувствуете себя более уверенно.

Спасибо за прочтение!

Psst .. вам может понравиться 4 + 1 способ сделать HTTP-запросы с Node.js: async / await edition

Я Валентино Гальярди, и я помогаю занятым людям освоить этот безумный современный JavaScript-материал. Я занимаюсь обучением и консультированием по JavaScript, React, Redux.

Давайте свяжемся!

Похожие

Как подключить WiFi дома?
Построение беспроводных локальных сетей на основе стандарта IEEE 802.11, или как его еще называют Wi Fi, стала очень популярной в последнее время. Представьте насколько удобно иметь доступ к сети Интернет в любой части вашей квартиры или дома, не быть привязанным сетевыми кабелями компьютеров в определенных рабочих местах и ​​при этом иметь локальную
Как работает WOW FI
Наконец, вы активировали свою новую интернет-линию и подписали контракт с Fastweb. Вы скорее удовлетворены обслуживанием, но с того момента, когда у вас новый клиент, есть некоторые проблемы, которые вам не очень понятны. Фактически недавно вы получили SMS от Fastweb, в котором вам были предоставлены учетные данные для доступа к WOW FI, услуге, которую вы не запрашивали для активации и о которой вы абсолютно ничего не знаете. Что такое WOW FI? Как это работает? Для чего это? Это оплачено?
Как выглядеть модно при скромном бюджете
... для беженцев в Палермо, Сицилия. Я переодеваюсь не менее трех раз в день, потому что каждый раз в день требуется разная одежда. Утром я ношу красочные, непревзойденные комплекты, то есть зеленые штаны и белый жакет. Во второй половине дня я стараюсь надеть что-нибудь с забавным акцентом, например, берет с камуфляжной курткой. По вечерам я всегда берусь за элегантный костюм. Шляпы и галстуки-бабочки являются неотъемлемым элементом моего гардероба (я предпочитаю галстуки-бабочки).
У вас есть аккаунт в LinkedIn? Подумайте о новой премиум-версии, потому что вы не найдете работу
Изменения в LinkedIn, называемом бизнес-эквивалентом Facebook, продолжались. После распространения основного мобильного приложения на основные факторы и превращения каждого из них в отдельную программу, сервис представил новые продукты разработан, чтобы позволить пользователям выделяться из толпы, одновременно повышая привлекательность
Как играть в многопользовательские сетевые игры с одной учетной записью Minecraft
Итак, вы хотите играть в Minecraft со своей семьей, но у вас есть только один аккаунт. Вы не сможете играть онлайн, но с несколькими изменениями в файлах конфигурации вы все сможете играть по сети вместе дома без дополнительных учетных записей. Зачем мне это
Как использовать буквицы для улучшения текста в Microsoft Word
Реклама Возможно, вы видели это. Это внимание требует большой заглавной буквы вверху блока текста. Это капля . Буквица - это первая буква абзаца, и она имеет гораздо больший размер, чем обычный текст, который следует за ней. Это также дублируется как начальная , Посмотрите на древнюю заглушку ниже. Обратите внимание, как он «опускается», чтобы покрыть несколько строк, следующих
Как скачать Movie Maker
Вы только что отформатировали свой компьютер, и Movie Maker , известное программное обеспечение для редактирования видео от Microsoft, похоже, исчезло из меню «Пуск»? Вы купили новый ноутбук с Windows 10 и не можете найти Movie Maker? Это меня не удивляет. Microsoft официально прекратила поддержку Movie Maker и больше не делает программу загрузки доступной (вместе с остальной частью пакета Windows Essentials, частью которого она является). В любом случае, не беспокойтесь:
Как остановить приложения Android, работающие в фоновом режиме
... дляется. Проблемы часто имеют одну и ту же причину. Фоновые приложения могут расходовать заряд аккумулятора и ресурсы. Некоторые приложения могут быть плохо оптимизированы, некоторые могут быть вредоносными программами, а некоторые могут просто содержать ошибку. Не бойся! Выключение этих мошеннических фоновых приложений требует небольшого опыта. Некоторые из этого пошагового руководства будут очень знакомы, если вы опытный пользователь, но мы надеемся, что есть чему
Как добавить двухфакторную аутентификацию в Cisco ASA 5500 IPSec VPN
Cisco ASA - это очень популярное VPN-решение, а IP Sec VPN, вероятно, наиболее часто используемая функция. Этот документ описывает, как использовать радиус для добавления двухфакторной аутентификации через WiKID к ASA с использованием интерфейса управления ASDM. Если вы еще не загрузили WiKID Strong Authentication server Мы рекомендуем вам начать там. Как только это настроено, вы можете
микро: бит и iOS
Подключение вашего micro: bit к вашему устройству iOS позволяет вам кодировать ваш micro: bit на ходу, используя официальное приложение micro: bit. Используйте это руководство и обширную справку в самом приложении, чтобы узнать, как использовать micro: bit с вашим устройством iOS! Быстрый старт 1: Программа («Flash») этот шестнадцатеричный файл
Как сделать дебранд в Huawei P8 Lite с заблокированным загрузчиком
Huawei P8 Lite купленный в польской сети имеет так называемый фирменное программное обеспечение, содержащее дополнения от операторов Orange, Play, T-Mobile и Plus. Это предотвращает обновление программного обеспечения до последней версии. Как сделать дебранд, или как удалить программное обеспечение от оператора и загрузить чистое программное обеспечение?

Комментарии

Что если мы заменим всю воду в озере на правом острове лавой, а затем дадим мост, куда можно пойти, как замок или башня на левом острове?
Что если мы заменим всю воду в озере на правом острове лавой, а затем дадим мост, куда можно пойти, как замок или башня на левом острове? Первое изменение - озеро лавы - довольно простая задача, поэтому давайте сначала рассмотрим ее в качестве примера простого (и экономящего время) редактирования, с которым может помочь MCEdit. Сначала мы пролетим над озером в редакторе и выделим его так же, как мы выбрали объекты в WorldEdit, используя инструмент выбора, чтобы выбрать противоположные углы
Таким образом, вы также убьете страсть в отношениях , Так что же делать?
Вы, наверное, много слышали в последнее время, но что такое 5G? Хороший вопрос. Проще говоря, 5G - это следующая крупная эволюция технологии мобильной беспроводной связи. Это предоставит клиентам еще более быстрые соединения для передачи данных… Проще говоря, приложение, помещенное в корзину Never, - это приложение, которое практически никогда не используется, поэтому система ограничит свой доступ к ресурсам, таким как ЦП. Это означает, что он будет использовать меньше батареи.
Как вы знаете, что ваш веб-хост является основной причиной проблемы вашего сайта?
Как вы знаете, что ваш веб-хост является основной причиной проблемы вашего сайта? Вот несколько подсказок: Ваш сайт постоянно снижается Ваш сайт очень медленный Обслуживание клиентов не является полезным Вы больше пространства, функциональности или других ресурсов Вы платите слишком много Вас не раз сломали Вы слышали о замечательную услугу в других местах Bottomline: хороший веб-хост = лучше спать по
Но если я хочу отключить этот сервис, что вы должны сделать?
Но если я хочу отключить этот сервис, что вы должны сделать? Я могу сказать вам, что вы можете выполнить процедуру деактивации службы в любое время, но отключение службы также подразумевает, что имя пользователя и пароль, которые вы получили для доступа к WOW FI, также будут отключены. В двух словах: если вы не включите сервис, вы даже не сможете использовать его самостоятельно.
Итак, что вы делаете, чтобы ваш ребенок не открывал такие страницы на Android?
Итак, что вы делаете, чтобы ваш ребенок не открывал такие страницы на Android? Вы должны действовать прямо на телефоне или планшете и вносить соответствующие изменения там. Способ № 1 - установить приложение родительского контроля (простой метод) Одним из самых популярных способов является установка специального приложения для родительского контроля. Таких приложений очень много, и они должным образом защищены от удаления - вам необходимо ввести пароль, который мы стремимся
Что такое промоушен в Россманне и что стоит покупать?
Что такое промоушен в Россманне и что стоит покупать? Все крупнейшие компании держат в секрете до промоушена, который они готовят. Тем не менее, вы должны следить за сайтом Россманна и, прежде всего, вступать в их клуб, потому что члены клуба ожидают еще больших скидок, чем обычно. Черная пятница 2018 года в Россманне Год назад Россманн подготовил несколько рекламных акций, из которых самым большим хитом стала распродажа парфюмерии
Знаете ли вы, что ваш браузер автоматически добавит некоторые стили CSS к элементам, даже не указав их?
Знаете ли вы, что ваш браузер автоматически добавит некоторые стили CSS к элементам, даже не указав их? Это так! Наиболее распространенный случай - когда элементы имеют фокус, и в этом уроке мы рассмотрим, как вы можете указать свои собственные стили в этих случаях. Давайте посмотрим на некоторые примеры Давайте сначала представим проблему. Разные браузеры делают разные вещи, когда элементы получают фокус. Прежде чем мы обеспечим согласованность, давайте посмотрим,
Вы когда-нибудь задумывались, как будет выглядеть Википедия, если она будет представлена ​​в более традиционной форме?
Вы когда-нибудь задумывались, как будет выглядеть Википедия, если она будет представлена ​​в более традиционной форме? На этот вопрос вскоре ответят основатели издательства PediaPress, которые только начали сбор средств печать бумажного издания всего содержимого английской версии Википедии , Если проект будет реализован, результатом будет энциклопедия, состоящая из тысячи книг, каждая из которых будет насчитывать около
Что дальше?
Что дальше? Android Q не за горами, и мы ожидаем, что Google продолжит улучшать способность Android отменять любые приложения, которые усложняют вашу жизнь. первый превью разработчиков уже выпущен, но он не раскрывает никаких новых методов энергосбережения. Мы, вероятно, услышим больше об этом, когда Google официально объявит о своей следующей версии Android. Связанные
Что вы любите делать в свободное время?
Что вы любите делать в свободное время? Ты заливаешь свечи? Вы сами делаете украшения или украшения для комнаты? Или вы предпочитаете сидеть за швейной машиной? Не было бы здорово превратить вашу страсть в прибыльный бизнес? Если ваша семья и друзья постоянно хвалят ваш талант и говорят им, что вы должны «превратить это хобби в бизнес» и что «так много людей купят его», тогда, возможно, пришло время начать. В этой статье вы узнаете, как заработать на хобби. Но сначала ... Должны ли вы
Что вы думаете о каплях?
Что вы думаете о каплях? Незаметное использование заглушек действительно может оживить ваши документы. Мы говорили о его использовании в Microsoft Word, но заглавные буквы могут быть частью любого типа документа, который пишется или разрабатывается. Вы можете использовать заглушки для украсить титульную страницу в Microsoft Word

Js организует память?
Js организует память?
Но как нам получить доступ к куче?
Что такое WOW FI?
Как это работает?
Для чего это?
Это оплачено?
У вас есть аккаунт в LinkedIn?
Вы купили новый ноутбук с Windows 10 и не можете найти Movie Maker?
Как сделать дебранд, или как удалить программное обеспечение от оператора и загрузить чистое программное обеспечение?