如何从Node.js中的垃圾收集器中"释放"内存缓冲区?

Zag*_*ine 4 node.js express

我想知道如何销毁缓冲区以释放内存.
我有下面的代码,它创建一个缓冲区并将其作为响应发送.这很好但是当我玩一个像75000行一样的大数组时,我可以看到我的内存占用了1Go,没关系但是当发送响应时,这个内存保存而不是免费的......我试着设置var buffernull在脚本的末尾,但没有任何附加...是否有解决方案来释放这个记忆?

var xlsxexport = require('node-xlsx');

module.exports = {
    exportExcel: function (req, res) {

        var excelData = []
        // ...
        // Construction of the array excelData
        // ...

        var buffer = xlsxexport.build([{name:'export', data:excelData}])
        res.set 'Content-Type', 'application/vnd.openxmlformats'
        res.set 'Content-Disposition', 'attachment; filename=' + filename
        res.send buffer
  }
}
Run Code Online (Sandbox Code Playgroud)

Jer*_*ser 6

如果您确信您的代码没有泄漏,并且您已经设置了每个大变量null,那么您可以尝试启动GC.

--expose-gc在运行脚本时添加选项:

node --expose-gc index.js

无论什么时候你想要你的脚本你可以调用GC:

global.gc()

但我强烈建议您在不强制GC的情况下找到一些方法.

祝好运!