1

当我编写逐行读取 70mb 文件并处理的递归程序时。我正在使用递归来处理该行。这是我的代码

function readFile(response, postData){

    var instream = fs.createReadStream('filePath');
    var datmap={};
    var rl = readline.createInterface({
        input: instream,
        output: outstream,
        terminal: false
    });

    rl.on('line', function(line) {
        hirarchyFun(datmap,line); 
    });
}

hirarchyFun=function(map,line){
    var key;
    if(line.indexOf(",") != -1){
        key=line.substring(0,line.indexOf(","));
        var subLine=line.substring((key.length+1));
        var internMap=map[key];
        if(typeof internMap == 'undefined'){
            internMap={};
        }
        var value=hirarchyFun(internMap,subLine);
        map[key]=value;
        return map;
    }else{
        return line;
    }
}

当我读取大约 70mb 的文件时,会出现错误

FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory

但它适用于大约 700kb 的文件。任何人都可以帮助解决这个问题吗?

4

0 回答 0