每次重新加载后,Node.js Web 应用程序 chrome 内存使用量都会增加

Posted

技术标签:

【中文标题】每次重新加载后,Node.js Web 应用程序 chrome 内存使用量都会增加【英文标题】:Node.js web app chrome memory usage increasing after every reload 【发布时间】:2021-02-03 12:13:55 【问题描述】:

我已经使用 node.js 构建了一个 Web 应用程序来向我们的用户显示信息。但是,每次刷新页面时,我都会看到内存使用量不正常地增加 (location.reload())。

首次加载时为 425MB, 2号787MB, 三号1075MB, 4 日 1350mb 等...我已经看到它攀升至 5/6GBs

解决此问题的唯一方法是关闭选项卡并从新选项卡开始。

当页面闲置或浏览页面时,我看不到任何增加。就像每次重新加载页面时 chrome 都会保留旧页面。我曾尝试从开发工具中关闭缓存,但这并没有做任何事情。我试过查看内存开发工具,但我无法真正理解它。

有解决办法吗?

【问题讨论】:

这似乎是前端的内存泄漏。您是否尝试过使用其他浏览器来确认它是 Chrome 还是您的网络应用? @user2895707 这似乎只发生在刚刚用 Edge 测试过的 Chrome 中,而且内存使用量不会增加 @user2895707 但是我可以确认 Firefox 中的内存增加是相同的 试试我发布的解决方案,让我知道它是否有效。 我在大型 Angular 应用程序中遇到了同样的问题,当开发工具打开时,重新加载会导致内存膨胀。我已经尝试了卸载技巧,但它对我没有用。我想知道这是否与 ng serve 使用 websocket 与页面通信的方式有关,并且没有被清理,但不确定...... 【参考方案1】:

至少从2016开始,这是谷歌浏览器的问题

您可以使用链接的 2016 年问题中提出的解决方法:

window.addEventListener('unload', function () 
    document.documentElement.innerhtml = '';
);

并添加以下元标记以限制浏览器缓存站点。

<meta http-equiv='cache-control' content='no-cache'> 
<meta http-equiv='expires' content='0'> 
<meta http-equiv='pragma' content='no-cache'> 

【讨论】:

感谢您对 Firefox 和 Chrome 都有效。我已经看到了 2016 年的答案,但由于它是一个如此古老的错误,我认为它会被修复。此外,当尝试将它添加到我的代码时,它首先没有工作,但我把它放在了错误的位置,我只需要将它添加为 .js 文件中的第一件事

以上是关于每次重新加载后,Node.js Web 应用程序 chrome 内存使用量都会增加的主要内容,如果未能解决你的问题,请参考以下文章

为 node.js 重新加载。有可能吗? [复制]

node.js + mysql + ejs 数据插入后无需重新加载页面即可更新屏幕信息

Discord.js / Node.js FS - 在同一会话中重新加载文件?

node web 应用热更新

我应该在每次使用 ExpressJS/Node 更改时重新启动应用程序服务器吗? [复制]

Node.js:如何重新加载模块