Firefox扩展中的僵尸隔间

Zombie compartments in Firefox extension

本文关键字:僵尸 扩展 Firefox      更新时间:2023-09-26

我参与了Firefox扩展的开发。我们的扩展很复杂,而且我们有永久僵尸隔间的问题。Mozilla僵尸隔间页面只提供一般信息,只介绍了问题和测试方法。

因此,我想问是否有人知道常见的瓶颈和有问题的设计模式(或者简单地说,已知的错误和失败)以及如何处理它们的最佳实践。

添加:以下是扩展中内存泄漏的常见原因的良好链接。还有其他建议吗?

最常见的故障模式是存储对网页的引用太长时间。这可能是由于我所看到的几个原因:

  1. 全局变量的赋值。特别是由于忘记了var
  2. 分配给用于存储状态的全局变量的成员,然后不清除该全局变量
  3. 创建关闭网页对象的新函数对象,然后将这些函数存储在某个地方(尤其是作为事件侦听器)一段时间

基本上,任何时候你在处理网页上的东西,都要确保你永远不会把它分配给用var声明的局部变量之外的任何东西,并且你不会创建新的长期函数来关闭它。这两件事在很大程度上有助于解决大部分情况。

请注意,这些都不是Firefox扩展特有的;它适用于JavaScript中的所有编码。。。