致命错误:CALL_AND_RETRY_last分配失败 - 在预处理我的js文件时处理内存不足

时间:2014-08-06 07:20:20

标签: javascript node.js fatal-error

我正在尝试为每个平台预处理我的js文件并使用我的js-preprocess.js美化它。我能够处理多达153个文件。如果文件数量增加,控制台显示以下错误! 致命错误:CALL_AND_RETRY_2分配失败 - 处理内存不足 请帮我解决这个问题! 这是我主要工作的一个代码片段!

fs.readdir(inputdir,function(err,files) {
     console.time('PreProcessingJStime')
    files.forEach(function(file) {
        if (file.indexOf(".js") != -1) {
            console.log('PreProcessing JS File : '+file);
            fs.writeFile(outputdir+"/"+file,beautify.js_beautify(preprocess(fs.readFileSync(inputdir+"/"+file,'utf-8'),defines).join('\n'),{preserve_newlines:false}));
        }
    },this);
    console.timeEnd('PreProcessingJStime')
})

提前致谢:)

1 个答案:

答案 0 :(得分:2)

您正在使用fs.writeFile,这是异步的。这意味着您要同时写入所有文件,并且所需的所有数据都会缓存在内存中。如果将其更改为fs.writeFileSync,则在继续下一个文件之前完成一个文件,并且所有与先前文件相关的数据都变为垃圾,因此垃圾收集器将在需要时获取它。