2012-02-20 5 views
9

Firefoxのメモリが他のブラウザよりもずっと速くなっている理由については困惑しています。重いAJAXアプリでFirefox固有のメモリが増加する

基本的には、AJAXのかなりの量を使っています。基本的なアクションは、平均レベルのHTMLを持つ新しい記事セットを読み込むことです。 1ポストあたりの総平均データ量(読み込まれた画像を含む)は1MB未満、おそらく900kです。 jQuery 1.7.1を使用しています。

Chromeのメモリは安定しているようですが、Firefoxではすべてのポストロードで約20MBの新しいメモリが使用されます。多くの投稿が読み込まれているので、すぐに1GB以上になり、メモリでも1.4GBになり、物事は急速に停止するようになります。

Firefoxで掘り下げて、「削除」を使ってクロージャーやその他の無関係な変数を削除しようとしました。大きな改善はありません。私はその後、機能を削除し始めました、そして、すべてが貢献するように思えました。

FBウィジェット(投稿ごとに1つのコメントウィジェット)を過度に再読み込みすると、投稿あたり10MBの新しいメモリが大幅に改善されました。

しかしそれ以上に、私ははるかに低いことはできません!基本的には、$ .post()で新しいhtml +イメージ(約900k)を読み込むだけで、新しいイメージに "display:none"があっても、各ポストに〜8MBの新しいメモリが追加されます。 (また、ファイヤーバグを無効にしようとしました)。

これはメモリ管理に関する私の最初の試みですが、これはちょっとしたオーバーヘッドのように思えます。私は10倍ではなく、ロードされたデータの量に合わせてメモリを増やす必要があるようです。 (または、Chromeのようにまったくいいとは限りません...)

これは本当に合理的ですか?この問題を最小限に抑えるために、どこで問題を探すか、あるいは私が何ができるかについてのアイデアはありますか?

ありがとうございます!

更新

ボリスが適切に観察されたように、メモリの増加は、(少なくとも80%)がほぼ完全に画像によるものです。しかし、メモリの増加は、ロードされる画像のサイズよりはるかに(10倍)大きくなります。メモリを使って学んだもう1つのこと:メモリ - 単に新しい空のタブを開くと、メモリが急速に低下し、追加されたイメージのほとんどすべてのメモリが消えます。私はそれがGCを蹴っていると推測しているので、Borisが推測するように、それはおそらくGCの問題だと思われますか?

この場合、どのようにFFで自然にトリガーされていないのかを調べるにはどうすればよいですか? JSでそれを起動する方法はありますか?私が言及したように、私は通過し、閉鎖を取り除こうとしました...

divsの代わりに画像要素にバインドするイベントは(jQuery経由で)バインドできますか?私はjQueryがすべてのものを扱ったと思った。

+1

FirefoxでFirebugを実行していますか?もしそうなら、それを無効にするとどうなりますか? –

+0

私が質問で言及したように、私は火かき棒を無効にしようとしました。違いはありません。 –

+0

これは非常に奇妙です。問題を示すサイトにリンクすることはできますか? –

答えて

1

本当にたくさんのajaxを使用している場合は、$ .ajax()オプション "cache"をfalseに設定してみてください。しかし、ブラウザのメモリに影響を与えるには大量のデータが必要です。

パフォーマンス上の理由から、通常はメモリ内でできるだけ多くの操作を行い、可能な限り数回DOMに書き込むことをお勧めします。

あなたが使用しているFFのバージョンは、メモリだけでなく、それを比較している他のブラウザも再利用していないことがあります。

私はクロージャーが犯人になるとは思われません。これは古いIEの問題のようです。

本当に問題がある場合、大きなオブジェクトは、もはや使用されていないことが分かっている場合は明示的に破棄することができます。

1

必ずしも回答ではありませんが、Firefox(13)の最新バージョンでこれらの問題が発生していますか?このリリースでは多くのメモリとパフォーマンスに関連する問題があり、mozillaは修復作業中であると言いました。

また、ページの読み込み中に多くのアイテムが読み込まれていて、それらをすべて表示していない場合は、jqueryのウェイポイントプラグインを使用してこれらのイメージを動的に読み込むことができます。ブラウザがページの読み込み時に感じる多くの負荷を軽減します。

このうちのどれかが役に立ちました。ここで、さらにあなたを助けるかもしれないいくつかの読み物は次のとおりです。

http://support.mozilla.org/en-US/kb/firefox-slow-how-make-it-faster http://support.mozilla.org/en-US/kb/firefox-uses-too-much-memory-ram

http://imakewebthings.com/jquery-waypoints/私が見てきた

2

は私は2GBのRAMを打つ

私は、ファイルに保存され、このコマンドトリガ私のドックでのウィジェットがあります。

killall -c firefox 
sleep 1 
open -a Firefox 
sleep 1 
exit 

FFをリセットしてすべてのタブを元に戻す簡単な方法。このほとんどの日をする必要があります:) Firebug用でなかったら、私は今までにChromeにいたでしょう

関連する問題