节点版本号为v0.11.13

内存使用在崩溃期间根据sudo顶部不超过3%

重现此错误的代码:

var request = require('request')
var nodedump = require('nodedump')

request.get("http://pubapi.cryptsy.com/api.php?method=marketdatav2",function(err,res)
{
    var data
    console.log( "Data received." );
    data = JSON.parse(res.body)
    console.log( "Data parsed."   );
    data = nodedump.dump(data)
    console.log( "Data dumped."   ); 
    console.log( data )
})

为了检查这是否是递归堆栈大小的问题,我运行了下一个代码——stack-size=60000参数

var depth = 0;

(function recurse() {
    // log at every 500 calls
    (++depth % 500) || console.log(depth);
    recurse();
})();

并且有

264500 
Segmentation fault

然后我运行了代码,给我致命错误:CALL_AND_RETRY_LAST分配失败-进程内存不足,具有相同的-stack-size=60000参数,并且没有分割错误。

因此,我得出结论,CALL_AND_RETRY_LAST与递归堆栈大小没有任何共同之处。

我怎么解决这个问题呢?我相信我的电脑上有足够的空闲内存来成功完成这项任务。

在stackoverflow上也有类似的问题,但这些问题都不是关于CALL_AND_RETRY_LAST的,这就是为什么我创建了单独的问题。


当前回答

# !/usr/bin/env节点——max-old-space-size=4096在ionic-app-scripts.js力下工作

但修改后:下面的文件它工作

node_modules /。bin / ionic-app-scripts.cmd

通过添加:

@IF EXIST "%~dp0\node.exe" ( “% ~ dp0 \ node.exe”“% ~ dp0 . . @ionic \ app-scripts \ bin \ ionic-app-scripts.js”% * )其他( @SETLOCAL @SET列出= %列出;. js, =; % 节点——max_old_space_size=4096 "%~dp0..@ionic\app-scripts\bin\ionic-app-scripts.js" %* )

其他回答

我发现max_new_space_size不是节点4.1.1的选项,max_old_space_size本身并不能解决我的问题。我添加以下到我的shebang和这些组合似乎工作:

#!/usr/bin/env node --max_old_space_size=4096 --optimize_for_size --max_executable_size=4096 --stack_size=4096

[编辑]:4096 === 4GB内存,如果您的设备内存较低,您可能希望选择较小的数量。

[更新]:在运行grunt时也发现了这个错误,之前是这样运行的:

./node_modules/.bin/grunt

更新命令后,它停止有内存错误:

node --max_old_space_size=2048 ./node_modules/.bin/grunt 

我在离子中面临这个问题,尝试了许多解决方案,但通过运行这个解决了这个问题。

MAC: Node -max-old-space-size=4096 /usr/local/bin/ionic cordova

Windows: node——max-old-space-size=4096 /Users/{your user}/AppData/Roaming/npm/node_modules/ionic/bin/ionic

# !/usr/bin/env节点——max-old-space-size=4096在ionic-app-scripts.js力下工作

但修改后:下面的文件它工作

node_modules /。bin / ionic-app-scripts.cmd

通过添加:

@IF EXIST "%~dp0\node.exe" ( “% ~ dp0 \ node.exe”“% ~ dp0 . . @ionic \ app-scripts \ bin \ ionic-app-scripts.js”% * )其他( @SETLOCAL @SET列出= %列出;. js, =; % 节点——max_old_space_size=4096 "%~dp0..@ionic\app-scripts\bin\ionic-app-scripts.js" %* )

如果你看一下源代码:github/v8,似乎你试图保留一个非常大的对象。根据我的经验,如果您试图解析一个巨大的JSON对象,就会发生这种情况,但当我尝试用JSON和node0.11.13解析输出时,它就可以正常工作。

你不需要更多——stack-size,你需要更多内存:——max_new_space_size和/或——max_old_space_size。

除此之外,我能给你的唯一提示是尝试另一个JSON解析器和/或尝试将输入格式更改为JSON行,而不仅仅是JSON。

要解决这个问题,您需要通过使用选项max_old_space_size来增加内存限制来运行应用程序。默认情况下,Node.js的内存限制是512 mb。

node --max_old_space_size=2000  server.js