捕获Node.js中的致命错误|致命错误:CALL_AND_RETRY_0分配失败 - 处理内存不足

时间:2014-08-07 21:36:25

标签: node.js memory-leaks md5

我想知道是否有办法捕捉到这个错误:

FATAL ERROR: CALL_AND_RETRY_0 Allocation failed - process out of memory

我试过了:

process.on('uncaughtException', function(err){
        //do something
 })

但这并没有发现错误。

非常感谢任何帮助

P.S当为大约十八个文件的字符串生成MD5哈希时发生这种情况,我正在使用这样的md5模块:

for(i=0;i<array.length;i++){
    fs.readFile(array[i], function(err,buf){
        console.log(mdf(buf))
    })

}

1 个答案:

答案 0 :(得分:1)

您应该避免在内存中缓冲整个文件。一次计算一个块的md5哈希值。例如:

var fs = require('fs'),
    crypto = require('crypto');

var array = [ 'foo.txt' ];

array.forEach(function(filename) {
  var hasher = crypto.createHash('md5', { encoding: 'hex' });
  fs.createReadStream(filename).pipe(hasher).on('finish', function() {
    process.nextTick(function() {
      var md5sum = hasher.read();
      console.log(filename + ': ' + md5sum);
    });
  });
});