How to request the Garbage Collector in node.js to run?

Javascriptnode.jsGarbage Collection

Javascript Problem Overview


At startup, it seems my node.js app uses around 200MB of memory. If I leave it alone for a while, it shrinks to around 9MB.

Is it possible from within the app to:

  1. Check how much memory the app is using ?
  2. Request the garbage collector to run ?

The reason I ask is, I load a number of files from disk, which are processed temporarily. This probably causes the memory usage to spike. But I don't want to load more files until the GC runs, otherwise there is the risk that I will run out of memory.

Any suggestions ?

Javascript Solutions


Solution 1 - Javascript

If you launch the node process with the --expose-gc flag, you can then call global.gc() to force node to run garbage collection. Keep in mind that all other execution within your node app is paused until GC completes, so don't use it too often or it will affect performance.

You might want to include a check when making GC calls from within your code so things don't go bad if node was run without the flag:

try {
  if (global.gc) {global.gc();}
} catch (e) {
  console.log("`node --expose-gc index.js`");
  process.exit();
}

Solution 2 - Javascript

One thing I would suggest, is that unless you need those files right at startup, try to load only when you need them.

EDIT: Refer to the post above.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRahul IyerView Question on Stackoverflow
Solution 1 - JavascriptIgnisFatuusView Answer on Stackoverflow
Solution 2 - Javascriptlwang135View Answer on Stackoverflow