34

Workaround to fix heap out of memory when running node binaries (which is a common issue when using TypeScript 2.1+ and webpack) is increasing the max mem for node.

increase-memory-limit is a package to do that. In the link, it says

As of Node.js v8.0 shipped August 2017, you can now use the NODE_OPTIONS environment variable to set the max_old_space_size globally. export NODE_OPTIONS=--max_old_space_size=4096

But how do I set that environment variable in Windows? In powershell, it is giving me the error "export : The term 'export' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.".

Zag
  • 483
  • 1
  • 4
  • 9

4 Answers4

70

export is a Linux command. You can use set for Windows:

set NODE_OPTIONS=--max_old_space_size=4096

mikemaccana
  • 94,893
  • 84
  • 350
  • 433
Peter Boomsma
  • 6,928
  • 11
  • 67
  • 134
  • 35
    how to check this was applied? – godblessstrawberry Oct 14 '19 at 15:16
  • 3
    this will help you v8.getHeapStatistics().total_available_size / 1024 / 1024 as of version 10.14.1 both command line arg and environment variable NODE_OPTIONS work – Andrey Oct 31 '19 at 15:51
  • isn't `set` suppose to persist between sections? I mean, I close my terminal, the problem is already there.... If not, is there a way to get it persisted ? – Davi Daniel Siepmann Feb 26 '20 at 16:26
  • 1
    I think you can use [setx](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx) to persist environment variables on Windows Server. It [varies on other versions](https://www.computerhope.com/issues/ch000549.htm). – M Miller Mar 05 '20 at 16:24
  • 1
    After setting it with set NODE_OPTIONS=--max_old_space_size=4096 When I am checking it with: node -e 'console.log(v8.getHeapStatistics().heap_size_limit/(1024*1024))' It have not been increased..... – Dilip Kumar Yadav Jan 08 '22 at 12:58
0

As per nodeJs documentation, property should be (with hyphens)

--max-old-space-size=SIZE (in megabytes)

and can be used in start script or set/export with NODE_OPTIONS like others said. No need of new library to import for this.

$ node --max-old-space-size=800 index.js

Reference: https://nodejs.org/api/cli.html#cli_max_old_space_size_size_in_megabytes

NKS
  • 35
  • 5
0

To resolve this issue on AWS Instance,

Login into AWS Console and turn of the instance from the Instance State tap

Then under the Action tap

Select change instance type

Then choose t2.medium, save and exit

Go back and start then instance

Then run your app again

This common on t2.micro instance cause it is 1 gig Ram

Thanks

0

If running with powershell, the command for setting NODE_OPTIONS should be like:

$env:NODE_OPTIONS="--max-old-space-size=8192"

And then you can check whether it's applied with following command:

node -e 'console.log(v8.getHeapStatistics().heap_size_limit/(1024*1024))'
8240
Edward Zhang
  • 61
  • 11