eme*_*his 8 javascript firefox memory-leaks google-chrome
我怀疑我的单页javascript应用程序包含某处内存泄漏.如果页面处于打开状态,运行Firefox或Chrome的弱设备似乎最终会崩溃.我正在尝试确定是否需要重新加载页面以释放内存.
我了解内存处理特定于浏览器,因此Chrome或Firefox的答案可能有所不同.
注意:我认识到在这个问题中提到了很多浏览器(这将是偏离主题),但这个问题的关键是关于javascript调试,我认为这是非常主题.
除非浏览器/扩展程序出现错误,否则浏览器会在不再需要资源时释放资源;Firefox 清理分区,Chrome 杀死进程和相关存储。
Firefox 会尽力而为,但可能需要一些时间来清除内存,并且有时可能会创建僵尸隔间:
当垃圾收集时,隔间会被破坏。这种情况发生在最后一次对它们的引用消失之后一段时间。这意味着页面关闭和其隔间消失之间可能存在延迟......
有时,由于 Firefox、附加 SDK 和/或附加组件中的错误,创建的隔间永远不会被破坏。这些是一种特殊类型的内存泄漏,它们会导致 Firefox 的内存使用量随着时间的推移逐渐增加,从而减慢速度并使其更容易崩溃。
Chrome 对每个选项卡使用一个进程(实际上是选项卡中某些实体的子进程以及 IIRC,例如插件、iframe 等),以达到相同的效果。尽管快速检查chrome://memory-redirect/和刷新选项卡看起来像是pid使用了相同的方法。因此,刷新并不是完全干净的状态。
FWIW Chrome 有一个“强制重新加载”功能,可以清除缓存,可能对于清除更多内存或安慰剂有用:cmd-shift-r
我不太熟悉内部结构,但我只看到当特定浏览器变得太聪明并试图在不更改源等以努力增加负载时保留内容时,刷新之间无法可靠释放的内容表现。
简而言之,如果您没有看到内存按预期释放,那么您可能会遇到浏览器错误,但您希望使用各种“about:memory”工具来验证这一点,此时您需要避免此类行为和/或向浏览器的开发团队报告问题。
否则,我认为最好的方法是使用各种可用的工具解决页面内的内存泄漏问题。
| 归档时间: |
|
| 查看次数: |
2102 次 |
| 最近记录: |