nodejs out of memory

后端 未结 3 1064
时光取名叫无心
时光取名叫无心 2020-12-23 12:09

I came across a curious issue today. This may be an easy answer for others, but it has me stumped. Why does the code below cause a memory error?

var cur =          


        
相关标签:
3条回答
  • 2020-12-23 12:26

    You can increase the default limits by passing --max-old-space-size=<value> which is in MB.

    The example will allow node's heap use up to 4GB (4096 megabytes) of memory:

    node --max-old-space-size=4096 app
    
    0 讨论(0)
  • 2020-12-23 12:31

    I don't get a memory allocation error when I run your script. How much RAM is on your system?

    Edit Ok with the author's updated notes, I can replicate it.

    Node is trying to convert your entire array to a string. The array is 16777216 elements long. Each element contains a number at least 9 digits long. Converting that to a string 150,994,994 characters long. Its just a huge operation that is exceeding the memory capabilities of node.

    0 讨论(0)
  • 2020-12-23 12:45

    It happens when I try to access the array. But getting the length does not.

    > var cur = 167772160;
    > var bcast = 184549375;
    > var addresses = [];
    > while (cur <= bcast){
    ...   cur += 1;
    ...   addresses.push(cur);
    ... }
    16777216
    > addresses.length 
    16777216
    > addresses
    FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory
    

    Here's another SO question, memory limit in Node.js (and chrome V8) that relates to issue with memory usage.

    0 讨论(0)
提交回复
热议问题