一尘不染

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

node.js

在启动时,似乎我的node.js应用程序使用了大约200MB的内存。如果我搁置一段时间,它会缩小到9MB左右。

是否可以从应用程序内执行以下操作:

  1. 检查应用程序正在使用多少内存?
  2. 请求垃圾收集器运行?

我问的原因是,我从磁盘加载了一些文件,这些文件是临时处理的。这可能导致内存使用量激增。但是我不希望在GC运行之前加载更多文件,否则存在内存不足的风险。

有什么建议 ?


阅读 259

收藏
2020-07-07

共1个答案

一尘不染

如果使用该--expose- gc标志启动节点进程,则可以调用global.gc()强制节点运行垃圾回收。请记住,在GC完成之前,节点应用程序中的所有其他执行都将暂停,因此请不要过于频繁地使用它,否则会影响性能。

在从代码内进行GC调用时,您可能需要包括一个检查,这样如果在没有标志的情况下运行node,事情不会变坏:

try {
  if (global.gc) {global.gc();}
} catch (e) {
  console.log("`node --expose-gc index.js`");
  process.exit();
}
2020-07-07