该应用程序是单页应用程序,因此不需要刷新页面。我们希望将其在Android设备上长时间运行。
但是,我们目前遇到了一个问题:在大约18小时后会崩溃(并且logcat报告指出在Android上运行时出现了OOM错误)。当我使用远程调试并使用Chrome的开发工具捕获时间轴时,很明显我们存在内存泄漏问题,因为我们看到JS堆不断增长。这个堆似乎一直增长,直到我强制进行垃圾回收。
另外一个让我感到奇怪的事情是,我在时间轴上还可以看到我们的事件侦听器正在增加,并且似乎对强制GC没有影响。这就可能是问题本身吗?(根据时间轴,我们谈论着成千上万的侦听器)
除了标准的“3个快照堆分析技术”之外,是否有其他建议?这些技术在此处不太有用,因为即使没有互动,堆也会增长,这可能是由于我们在后台进行的一些周期性更新以读取和显示数据所导致的。否则,我完全可以接受任何其他内存分析工具!
我在这个领域几乎没有经验,因此任何缩小这些恶性泄漏原因的建议都将是极好的!
不幸的是,由于程序的性质和大小,提供有用的代码段非常困难。对于这个长问题,我表示歉意。
编辑: 我最强烈的怀疑之一是当我查看开发工具时间轴并看到侦听器不断增加且未被垃圾回收时……这最终可能会导致崩溃吗?
但是,我们目前遇到了一个问题:在大约18小时后会崩溃(并且logcat报告指出在Android上运行时出现了OOM错误)。当我使用远程调试并使用Chrome的开发工具捕获时间轴时,很明显我们存在内存泄漏问题,因为我们看到JS堆不断增长。这个堆似乎一直增长,直到我强制进行垃圾回收。
另外一个让我感到奇怪的事情是,我在时间轴上还可以看到我们的事件侦听器正在增加,并且似乎对强制GC没有影响。这就可能是问题本身吗?(根据时间轴,我们谈论着成千上万的侦听器)
除了标准的“3个快照堆分析技术”之外,是否有其他建议?这些技术在此处不太有用,因为即使没有互动,堆也会增长,这可能是由于我们在后台进行的一些周期性更新以读取和显示数据所导致的。否则,我完全可以接受任何其他内存分析工具!
我在这个领域几乎没有经验,因此任何缩小这些恶性泄漏原因的建议都将是极好的!
不幸的是,由于程序的性质和大小,提供有用的代码段非常困难。对于这个长问题,我表示歉意。
编辑: 我最强烈的怀疑之一是当我查看开发工具时间轴并看到侦听器不断增加且未被垃圾回收时……这最终可能会导致崩溃吗?