DEV Community

Marc
Marc

Posted on

3

Check your NodeJS program memory utilization

As a NodeJS developer, I regularly want to control how much memory is used by the programs I’m creating, so I can assess my code choices and thus keep, update or totally change the way I coded some functionalities.

I try to force myself to do it as much as possible. I think the best version of code is the one that fulfills the requirements with the minimum of resource utilization.

I can do it using some NodeJS built-in functions, such as process.hrtime (https://nodejs.org/api/process.html#process_process_hrtime_time)

But this will add several lines of code and output values to the console.

I prefer to use a small NPM library that will do all the stuff for me and also present the result in a readable graphic chart.

For example, let’s say I want to check the memory utilization when populating then deleting an array (this is a very simple case just to present what can be done). Here is the small program:

const randomstring = require('randomstring')

let array=[]
for (let index = 0; index < 10000; index++) {
    array[index]=randomstring.generate(32)
}

for (let index = 0; index < 10000; index++) {
    array.splice(index)
}
Enter fullscreen mode Exit fullscreen mode

I want now to check the memory utilization of such program. It will updated, using memuse NPM package (https://www.npmjs.com/package/memuse):

const memuse=require('memuse')
const randomstring = require('randomstring')

memuse.init('./mem.csv')

let array=[]
for (let index = 0; index < 10000; index++) {
    array[index]=randomstring.generate(32)
    memuse.poll()
}

memuse.tag('start deletion')

for (let index = 0; index < 10000; index++) {
    array.splice(index)
    memuse.poll()
}

memuse.end('./mem.svg')
Enter fullscreen mode Exit fullscreen mode

In the program above, here are the explained steps:

  • I loaded the memuse library
  • I initialized it (memory utilization statistics will go into the mem.csv file)
  • I called the memuse.poll() function each time I wanted to record the memory utilization statistics
  • Just after the array is loaded and before deleting it, I added a tag to locate this step into the chart, using memuse.tag()
  • Finally the memuse.end() produces the graphical chart.

I run the program and I get this nice memory utilization chart:
Alt Text

I hope this article will help you. Thanks.

Image of Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay