节点版本号为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的,这就是为什么我创建了单独的问题。


当前回答

当我创建一个react-native包时,我看到了这个问题。 我尝试过但没有成功的事情:

增加节点——max_old_space_size,有趣的是,这在本地为我工作,但在jenkins上失败了,我仍然不确定jenkins出了什么问题 有些地方提到将node的版本降级到6.9.1,但我也没有这样做。我只是想把这个放在这里,因为它可能对你有用。

对我有用的东西: 我在代码中导入了一个很大的文件。我解决这个问题的方法是将它包含在.babelrc的忽略列表中,就像这样:

{
    "presets": ["react-native"],
    "plugins": ["transform-inline-environment-variables"],
    "ignore": ["*.json","filepathToIgnore.ext"]
}

它是一个.js文件,实际上不需要转译,将它添加到忽略列表确实有帮助。

其他回答

任何使用Azure构建管道遇到此错误的人,请尝试以下步骤更改构建代理的环境变量

添加一个Azure构建管道任务-> Azure powershell脚本:Inlinescript在Compile之前,使用以下设置

- task: AzurePowerShell@3
  displayName: 'Azure PowerShell script: InlineScript'
  inputs:
    azureSubscription: 'NYCSCA Azure Dev/Test (ea91a274-55c6-461c-a11d-758ef02c2698)'
    ScriptType: InlineScript
    Inline: '[Environment]::SetEnvironmentVariable("NODE_OPTIONS", "--max_old_space_size=16384", "Machine")'
    FailOnStandardError: true
    azurePowerShellVersion: LatestVersion

在Windows机器中运行以下命令

设置NODE_OPTIONS =——max_old_space_size = 4096

我更换了

Ng build -prod

with

Node——max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build——prod .使用实例

因此,不要使用ng build——prod,只需使用上面的命令开始node…生成产品版本不需要使用ng server——prod。

如果你不想用-prod,就把它拿掉。

这些是在vs code终端中使用的命令

node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod
node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng serve
npm install -g increase-memory-limit

increase-memory-limit

OR

导航到%appdata% -> npm文件夹或C:\Users\{user_name}\ appdata \Roaming\npm 打开ng。在您最喜欢的编辑器中的CMD 在IF和ELSE块中添加——max_old_space_size=8192

现在ng。修改后的CMD文件如下所示:

@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe" "--max_old_space_size=8192" "%~dp0\node_modules\@angular\cli\bin\ng" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node "--max_old_space_size=8192" "%~dp0\node_modules\@angular\cli\bin\ng" %*
)

当我创建一个react-native包时,我看到了这个问题。 我尝试过但没有成功的事情:

增加节点——max_old_space_size,有趣的是,这在本地为我工作,但在jenkins上失败了,我仍然不确定jenkins出了什么问题 有些地方提到将node的版本降级到6.9.1,但我也没有这样做。我只是想把这个放在这里,因为它可能对你有用。

对我有用的东西: 我在代码中导入了一个很大的文件。我解决这个问题的方法是将它包含在.babelrc的忽略列表中,就像这样:

{
    "presets": ["react-native"],
    "plugins": ["transform-inline-environment-variables"],
    "ignore": ["*.json","filepathToIgnore.ext"]
}

它是一个.js文件,实际上不需要转译,将它添加到忽略列表确实有帮助。