为什么nodejs buffer的内存使用率越来越高?

q1qsirdb  于 2023-06-22  发布在  Node.js
关注(0)|答案(1)|浏览(123)

我有一个代码,记录从客户端到服务器的摄像机输入如下:

async function saveIntoMp4(chunks) {

      const options = { type: "video/webm" }
      let blob = new Blob(chunks, options);
      chunks.length = 0 // to stop any memory leaks
        const buffer = Buffer.from(await blob.arrayBuffer());

        try {
        fs.writeFile(
        `./videos/1.mp4`,
        buffer,
        () =>  console.log("video is saved!" )
      );
        } catch (error) {
          console.log('ERROR', error)
        }
      
  }

每次调用这段代码时,我都会得到保存的视频的确切数量(或大致相同的数量),占用我的RAM。我完全不知道该怎么处理这件事。我如何从我的代码中克服这个(可能的内存泄漏)问题?

ldfqzlk8

ldfqzlk81#

我猜你不应该从块中创建一个缓冲区(这会占用内存两次),而是直接写入块。这是伪代码,将其调整为工作版本:

import { open } from 'node:fs/promises';
 
async function saveIntoMp4(chunks) {

  const file = await open('./videos/1.mp4', 'w');

  for(const chunk of chunks){
    await file.write(chunk);
  }

  return file.close();
     
}

相关问题