gpt4 book ai didi

javascript - 如何在单页 javascript 应用程序中发现内存泄漏?

转载 作者:太空宇宙 更新时间:2023-11-03 10:18:12 25 4
gpt4 key购买 nike

该应用程序是单页的,因此不会刷新,我们希望它能在 Android 设备上长时间运行。

我们目前看到在大约 18 小时后发生崩溃(并且 logcat 报告表明在 android 上运行时出现 OOM 错误)。当我使用远程调试并使用 chrome 的开发工具捕获时间线时,很明显我们有内存泄漏,因为我们看到稳定增长的 js 堆。在我强制执行垃圾回收之前,堆似乎会继续增长。

另一件对我来说很奇怪的事情是,在时间轴上我还可以看到我们的事件监听器正在增长并且似乎不受强制 GC 的影响。这可能是问题本身吗? (根据时间轴,我们正在谈论成千上万的听众中的 10 位)

除了标准的“3 快照堆分析技术”之外,还有其他建议吗?这在这里不是很有用,因为堆即使在没有交互时也在增长,我认为这是由于我们在幕后进行的一些定期更新以读取和显示数据。否则,我完全愿意接受任何其他内存分析工具!

我在这方面的经验很少,所以任何缩小这些讨厌的泄漏原因的建议都是非常好的!

不幸的是,由于程序的性质和大小,很难提供有用的代码 fragment 。对于这个长问题,我深表歉意。

编辑:我最强烈的怀疑之一是,当我查看开发工具时间线并看到听众不断增加,并且从未进行垃圾收集时……这最终会导致崩溃吗?

最佳答案

伙计。我曾经也制作过一个单页应用程序,并且还让某些东西永远在那里运行并且遇到了同样的问题。我有一个无限的“while(true)”循环在做某事。即使我在循环结束时使变量和对象无效,javascript 的 GC 也没有收集垃圾。

解决方案?我从 while(true) 循环更改为定时事件。每 1 秒做一些事情,使用 javascripts 超时方法。

从这里我了解到 javascript 不会在 while(true) 方法上运行 GC。你的代码中有类似的东西吗?

地毯

关于javascript - 如何在单页 javascript 应用程序中发现内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31575231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com