在启动时,它似乎是我的 node .js应用程序使用大约200MB的内存.如果我暂时不使用它,它会缩小到9MB左右.
是否可以从应用程序内部执行以下操作:
- 判断应用程序使用了多少内存?
- 请求垃圾收集器运行吗?
我问的原因是,我从磁盘加载了一些文件,这些文件会被临时处理.这可能会导致内存使用激增.但在GC运行之前,我不想加载更多文件,否则就有内存不足的风险.
有什么建议吗?
在启动时,它似乎是我的 node .js应用程序使用大约200MB的内存.如果我暂时不使用它,它会缩小到9MB左右.
是否可以从应用程序内部执行以下操作:
我问的原因是,我从磁盘加载了一些文件,这些文件会被临时处理.这可能会导致内存使用激增.但在GC运行之前,我不想加载更多文件,否则就有内存不足的风险.
有什么建议吗?
如果使用--expose-gc
标志启动 node 进程,则可以调用global.gc()
强制 node 运行垃圾收集.请记住, node 应用程序中的所有其他执行都会暂停,直到GC完成,所以不要太频繁地使用它,否则会影响性能.
当从代码中进行GC调用时,您可能希望包含一个判断,这样,如果 node 在没有标记的情况下运行,情况就不会变糟:
try {
if (global.gc) {global.gc();}
} catch (e) {
console.log("`node --expose-gc index.js`");
process.exit();
}