javascript - 引导插件 : How to do proper cleanup on shutdown?

标签 javascript firefox garbage-collection firefox-addon-restartless

我对此很陌生,并且对垃圾收集对于无需重新启动的插件的确切工作方式感到有点困惑。

从我的关闭函数中,我当前调用所有必须进行清理的对象。他们将任何事件处理程序删除到他们可能设置的外部代码中,然后删除自己的所有属性。

然后我为那里的所有对象调用delete namespace.ObjectA。命名空间本身是我在 bootstrap.js 中创建的变量。我想知道这是否有必要,或者在调用我的插件的关闭函数后,Firefox 会从 bootstrap.js 中删除所有全局变量,从而删除从我的插件外部无法访问的所有其他对象吗?

显然,如果关闭的原因是 Firefox 应用程序关闭,我不会进行任何清理。

我是否遗漏了清理时应该做的任何事情?

最佳答案

请注意,无需重新启动的插件必须在“禁用”或“卸载”时执行这些操作。

插件必须删除事件监听器和观察者。
删除 namespace 并不重要(也没有完成),它是一个变量,将由 GC 完成。
此外,插件必须恢复(而不是重置)其自身之外的任何已更改的首选项。

正如您所说,通常不需要对 Firefox 应用程序关闭执行任何操作。

引用文献:

关于javascript - 引导插件 : How to do proper cleanup on shutdown?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27746715/

相关文章:

javascript - 一个 HTML 表单,其中包含用于不同任务的多个提交按钮

css - Bootstrap Dropdown Button 的样式与 Firefox 表格内的 Anchor 相同

java - JVM 堆已用百分比 - 何时生成警报

c# - 应该以什么顺序释放 COM 对象和垃圾收集?

javascript - <script> 的 innerHTML 适用于 FF,不适用于 IE

java - Android/Java - 通过在分配之前检测剩余的可用 RAM 来防止 OutOfMemoryError

javascript - 将类添加到在单击时应用渐变的 div 仅在第一次工作

javascript - 通过 2 路绑定(bind)在嵌套模板之间切换 polymer

javascript - 使用 Angular 将文件复制到服务器

javascript - Firefox 扩展中的 __defineGetter__ 未定义