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

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

是否有可能在应用程序内:

  1. 检查应用程序使用了多less内存?
  2. 请求垃圾回收器运行?

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

有什么build议么 ?

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

您可能希望在代码中进行GC调用时包含一个检查,以便在没有标志的情况下运行节点时不会出现问题:

 if (global.gc) { global.gc(); } else { console.log('Garbage collection unavailable. Pass --expose-gc ' + 'when launching node to enable forced garbage collection.'); } 

节点允许我们手动触发垃圾收集。 这可以通过使用–expose-gc标志运行Node来完成(即节点–expose-gc index.js)。
一旦节点以该模式运行,您可以随时通过从程序中调用global.gc()来以编程方式触发垃圾收集。

前 – / /强制垃圾收集每次这个函数被调用

 try { global.gc(); } catch (e) { console.log("You must run program with 'node --expose-gc index.js' or 'npm start'"); process.exit(); } 

我会build议的一件事是,除非你在启动时需要这些文件,只有当你需要时才加载。

编辑:参考上面的post。