我正在使用node.js应用程序中大约28,000个相当大的对象的数组。出于某种原因,当我在数组中大约10,000个项目之上时,从不调用此数据处理任务的最终模块 - 它只是在最后挂起。如果我将数组拼接到大约1或2千个对象,它就可以完美地运行。
我很失落。我已经盯着这个虫子一段时间了。我最初认为它是a bug with q但是在尝试了q的建议解决方案,并用异步代替q后,执行仍然停止。
代码基本上如下所示:
main.js
var task1 = require('task1');
var buggyTask = require('task2');
var notCalledTask = require('task3');
return task1().then(buggyTask).then(notCalledTask);
buggyTask.js
module.exports = function(items) {
var updateOrInsertData = function(item) {
return Q(Item.create(item));
};
return Q.all(items.map(updateOrInsertData));
};
我应该补充一点,该程序绝对不会耗尽内存。我用--max-old-space-size=4096