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

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

  1. 判断应用程序使用了多少内存?
  2. 请求垃圾收集器运行吗?

我问的原因是,我从磁盘加载了一些文件,这些文件会被临时处理.这可能会导致内存使用激增.但在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();
}

Node.js相关问答推荐

Spotify Auth访问令牌给出错误代码400

如何在MEVN堆栈中结合创建和更新表单流程?

我的Node.js应用程序没有将Mongoose方法findByIdAndDelete作为函数进行检测

TypeScript Eslint警告了一个AWS客户端构造函数(dynamodb),但没有警告另一个(s3)

Docker node_modules 文件夹上的 React 应用程序不可用

结合后端(Express)和前端(Angular)路由

级联定时器和Jest 的异步功能

Mongodb 从文档中获取聚合结果中的特定属性

在 Express.js 中迭代子文档数组

2 x 匹配标准显示没有结果

在 Passport 策略回调中获取请求对象

Puppeteer 错误:未下载 Chromium 修订版

mongoose 模式中的嵌套对象

如何从 Redis 保存和检索会话

如何在 Node.js 中等待子进程完成

npm publish 导致'错误:EPERM:不允许操作,取消链接...',errno -4048

代理后面的凉亭

Node.js, require.main === 模块

nodejs v10.3.0 的 gulp 任务问题:src\node_contextify.cc:629: Assertion `args[1]->IsString()' failed

在 Jade 包含中使用变量