【发布时间】:2014-11-23 12:32:30
【问题描述】:
节点版本为v0.11.13
根据sudo top 崩溃期间的内存使用不会超过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 参数处理内存不足并且没有得到Segmentation fault。
所以我得出结论,CALL_AND_RETRY_LAST 与递归堆栈大小没有任何共同之处。
我该如何解决这个问题?我相信我的计算机上有足够的可用内存来成功完成这项任务。
stackoverflow 上有类似的问题,但这些问题都不是关于 CALL_AND_RETRY_LAST 这就是我创建单独问题的原因。
【问题讨论】:
-
您的代码在 Node.js 0.10.28 上运行良好。它占用了 1200 MB 的虚拟内存,并在屏幕上打印出数量惊人的垃圾,但它似乎“工作”了。
-
垃圾正是我想要得到的。不好的是节点 0.10.* 不支持和声发生器,因此我不能将它用于此目的。
标签: node.js