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がすべてのものを扱ったと思った。
FirefoxでFirebugを実行していますか?もしそうなら、それを無効にするとどうなりますか? –
私が質問で言及したように、私は火かき棒を無効にしようとしました。違いはありません。 –
これは非常に奇妙です。問題を示すサイトにリンクすることはできますか? –