4

現在の画像がキャンバスに描画され、次/前のボタンで画像をめくることができるスライドショーのような Web アプリに取り組んでいます。画像が読み込まれsomeImage.src、パフォーマンス上の理由から、ユーザーが最初の画像を表示している間、バックグラウンドでそれを行っています。Firefox は、プリロード中に大量のメモリを割り当てます (Chrome や Safari の最大 20 ~ 30 倍、IE の 2 倍にもなります)。さらに、スライド ショーを変更すると、Web サイトの URL が同じままで、スライド ショーの xml 記述をバックグラウンドで (ドロップダウン メニューを使用して) ロードすることで実行できますが、メモリは解放されませんが、多くのメモリが解放されます。新規が割り当てられます。Web サイトの URL を変更またはリロードするまで、Firefox はメモリの割り当てを解除します。この動作は、他のすべてのブラウザーとは異なります。

何が起こっているのですか?なぜ Firefox はそんなに空腹なのですか? それを修正する方法はありますか?Firefox に強制的にメモリを解放させる方法や、読み込まれた (表示されていない) 画像を事前にキャッシュするために使用するメモリを減らす方法はありますか?

4

2 に答える 2

5

Firefox がますます多くのメモリを割り当てているように見える場合でも、それは誤解を招く可能性があります。Firefox のガベージ コレクターの動作は (私には) やや奇妙です。Firefox が巨大なメモリ チャンクを解放することを決定するまでに 2 ~ 8 分かかることは珍しくありません。おそらくソースコードを調べる価値があります。

ただし、いくつかの変数/参照を ing することで処理を高速化できる可能性があるnullため、ガベージ コレクターは何を破棄する必要があるかを少し早く検出できます。これは、キャンバス要素/参照を使用する場合に特に有効です。したがって、これ以上使用されない/必要でない変数を簡単に設定する

myCanvasRef = null;

あなたのためにいくつかの仕事をする必要があります。それでも Firefox のメモリ使用量が多すぎると思われる場合は、新しいタブを開いてabout:memoryと入力してください。これにより、現在のブラウザのメモリ使用量の詳細が表示されます。たとえば、そのメモリが Javascript コード、画像、または悪者を閉じ込めるのに非常に役立つその他のものに使用されているかどうかを確認できます。

于 2011-08-23T09:55:31.203 に答える
1

「firefox で GC を強制する方法」を探してここに来た場合、1 つの方法は about:memory に移動し、「gc」ボタンをクリックすることです。

残念ながら、それは私の特定のケースではあまり役に立たないように見えましたが、フォロワーにとって役立つ場合には、それがあります. リンク

于 2016-05-12T23:24:54.790 に答える