如何正确回收JavaScript中的缓冲区

Joh*_*abb 4 javascript buffer node.js

这个简单的代码使应用程序崩溃而内存不足:

var buf;
console.log(process.memoryUsage())
for(i=0; i<10000000; i++){
    buf = Buffer.alloc(1024)
    buf.clear
    delete buf
    buf = null
}
console.log(process.memoryUsage())
Run Code Online (Sandbox Code Playgroud)

那么如何正确回收缓冲区以便可以重用呢?不知道清除或删除是否是适当的方法,但是怎么办?谢谢

San*_*ket 5

如答案之一所述,缓冲区没有一种clear()方法来取消分配/释放已分配的缓冲区内存。您可以通过调用gc()方法来请求节点的gc释放未使用的内存,但是该选项仅在使用--expose-gc标志启动应用程序时可用。

'use strict';
let buf;
console.log(process.memoryUsage());
for (let i = 0; i < 10000000; i++) {

    buf = Buffer.alloc(1024);
    // Do your stuff
}

if (global.gc) {
    console.log('Requesting gc to free-up unsed memory');
    global.gc(); // Synchronous call, may take longer time and further execution get blocked till it finishes the execution
}

console.log(process.memoryUsage());
Run Code Online (Sandbox Code Playgroud)

链接:如何请求运行node.js中的垃圾收集器?