0

Firefox 拡張機能の開発に携わっています。私たちの拡張機能は複雑で、永続的なゾンビ コンパートメントに問題があります。Mozilla Zombie のコンパートメント ページでは、一般的な情報のみを提供し、問題とテスト アプローチを紹介するだけです。

そこで、一般的なボトルネックと問題のある設計パターン (または単に既知のバグと失敗) と、それらに対処するためのベスト プラクティスを誰かが知っているかどうかを尋ねたいと思います。

追加:拡張機能でのメモリ リークの一般的な原因については、こちらのリンクを参照してください。他の提案はありますか?

4

1 に答える 1

2

最も一般的な障害モードは、Webページへの参照を長期間保存することです。これは、私が見たいくつかの理由で発生する可能性があります。

  1. グローバル変数への割り当て。特に「var」を忘れたため。
  2. 状態を格納するために使用するグローバル変数のメンバーへの割り当て。その後、状態をクリアしません。
  3. Webページオブジェクトを閉じる新しい関数オブジェクトを作成し、それらの関数をしばらくの間(特にイベントリスナーとして)どこかに保存します。

基本的に、Webページから何かを操作するときは、varで宣言されたローカル変数以外にそれを割り当てないようにし、それを閉じる新しい長寿命関数を作成しないようにしてください。これらの2つのことは、ケースの大部分に役立ちます。

これはFirefox拡張機能に固有のものではないことに注意してください。JavaScriptのすべてのコーディングに適用されます...

于 2012-04-05T04:10:53.063 に答える