Node Multer内存存储:如何释放内存

Node Multer memory storage: how to release memory

好的multer支持内存存储,这个不错

  1. 请问上传文件后如何释放内存?

    存储=multer.memoryStorage();

    upload = multer({ storage : storage }).single('image');

对于磁盘存储,我可以删除dest文件夹中的文件。

  1. 另外,如果 2 个用户上传具有相同文件名的文件,内存存储会发生什么情况?

谢谢!

  1. but how to release the memory after uploading the file ?

完成请求后,内存将被释放。

(当 垃圾收集器 (GC) 清理时,通常几乎是立即清理)

  1. Also what happens if 2 user uploading the files with same file name, what's going to happen to memory storage ?

您不必担心,因为每个文件都在其自己的范围内处理,这意味着,就像我上面提到的,每个请求都会被处理,然后,一旦完成,请求就会被清除(连同存储的request.file 来自内存存储)

我建议你检查 multer 如何处理内存存储 multer/storage/memory.js (github)

MemoryStorage.prototype._handleFile = function _handleFile (req, file, cb) {
  file.stream.pipe(concat(function (data) {
    cb(null, {
      buffer: data,
      size: data.length
    })
  }))
}

如您所见,文件只是被流式传输到回调 (cb),因此没有全局引用可以阻止它驻留在内存中(没有对它的引用 = 不再需要 = 垃圾 = GC)


memoryStorage主要是临时处理文件缓冲区。

示例:您想要接收小文件并将它们转发到另一台存储媒体的服务器。 (multer 接收存储在内存中的温度,一旦不再引用它,就会自行中继并释放内存)