パスワードを忘れた? アカウント作成
11848 story

Firefoxのメモリ大量消費は『仕様』、だが回避方法あり 144

ストーリー by yoosee
便利なような余計な御世話なような… 部門より

Firefox遣いなAC曰く、"Firefoxを常用していると、browser.cache.memory.capacity を設定しなおしてもいつの間にか100MB~200MBのメモリ使用量をFirefoxが占有し、PCの動作が重くなるのが悩みの種であるが、Firefox開発者の一人Ben Goodgerのblog "Inside Firefox" に「それは仕様だ」という記事がでていることを 本家記事が伝えている。 前後のcacheを保持しておいた方がWeb巡回の際の利便性がよいという立場からの設計だそうだ。

ただし本家記事でのコメントによると、about:config から「browser.sessionhistory.max_total_viewers」の設定値を0 (タレコミ人Firefox1.5.0.1の初期設定値は50になっていた。この値が -1 の場合はPCのRAMサイズによって動的に設定されるらしい) に設定すると、例えば高解像度のイメージ (4000x6000等の大きすぎる画像は読み込み中にフリーズする可能性があるので注意)でも読み込み後すぐにメモリを解放し、Firefox のメモリ使用サイズが小さくなるそうだ。タレコミ人も自身のFirefoxで確認した。知っている人もいたでしょうが、Firefox遣いでメモリ消費量に困っていた方々は試してみてはいかがでしょうか。"

追記: airhead氏のコメントによると、 今回の話題の元になった Inside Firefox のエントリ に Ben 本人がコメントで指摘されたと言う訂正が追記されており、「この bfcache の値はタブ毎ではなくブラウザのセッション全体に効く global な値であり、最大8ページ分以上にはならない([最大8×タブの数]と言う解釈が間違っていた)」としている。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • そのうち出るだろうから先に指摘しておきます。
    MemoryLeakとメモリーの使いすぎは違います。

    MemoryLeakとは使用したメモリーを解放しわすれることで、
    後で開放する気があるなら(そしてそれができるなら)
    MemoryLeakではありません。 今回のキャッシュは基本的には、
    ちゃんと開放されるのでリークではありません。

    # しかし実際、FirefoxはいくつかMemoryLeakするみたいですし、
    # 許可なく大量のメモリーを使っているのも事実ですし...うーん
    • 実際問題として今回の話は、1.5 で導入された「進む・戻るボタンでの高速なナビゲーション」のためのメモリ使用なんですよね。とは言え現実には、あまりにメモリを使いすぎてページアウトしていたら高速もなにもないわけで。

      先の blog などでは、例えば RAM が 1GB の場合で cache ページ数が 8 となっています。平均的な 1 ページ当たりのメモリ消費量が 4MB となっていますから、例えばタブを 15個開いていて、それらが全て 8ページ分の履歴を持つと考えるとそれだけで 15x8x4MB = 480MB。
      履歴を持たない(開いたばかりの)タブがあることなどを考えて平均 4ページ程度としても 240MB のメモリをこの機能のために使うことになるでしょうか(考え方が間違っていたら御指摘ください)。

      個人的にはやはり使いすぎな気がしますし、高速に戻るナビゲーションなんて 1つ手前まであれば十分な気がします。
      親コメント
      • タブを 15個開いていて、それらが全て 8ページ分の履歴を持つと考えると

        8とかいうのは、キャッシュされるページのセッション全体での最大数だそうです。なおかつこの最大数はメモリ搭載量に依存し、Boris Zbarskyはコメントで「大半のユーザーはたいていの場合3ページとか5ページとかになる」と言っています。

        Edit: In the comments, Boris and David pointed out that I misread the code, and that this is a global preference so that there are no more than 8 cached pages for the entire session, not per tab. My initial posting had claimed that it was per-tab. Oops!
        編集:コメントにて、私がコードを読み違えているとBorisとDavidが指摘してくれた。これはグローバルの設定であるから、キャッシュされるページが8を超えないというのはセッション全体についてであり、タブ毎ではない、とのこと。私の最初の投稿では、タブ毎だと言っていた。やっちゃったよ!
        Ben Goodgerのブログエントリ最下段(両名の指摘 [mozillazine.org])
        親コメント
      • by Anonymous Coward on 2006年02月16日 13時51分 (#884650)
        >個人的にはやはり使いすぎな気がしますし、高速に戻るナビゲーションなんて 1つ手前まであれば十分な気がします。

        ディスクキャッシュだけで十分高速だし、
        直近のものならOSのディスクキャッシュにも乗ってるからさらに高速。
        屋上屋なFirefoxのオンメモリキャッシュは費用対効果が非常に悪い。

        タブブラウザはたどる可能性のあるリンクを片っ端から
        新タブで開いて先読みさせておくというスタイルで使っている限り
        高速に戻る必要性がそもそもなかったり。

        それにメインメモリが十分あまっていたらそれを全部使っていいかというとそうでもない。
        OSのディスクキャッシュが消えるし他のプロセスもディスクにスワップアウトしがち。

        Firefox開発者が自分の製品の評価を上げる為だけにこんな
        メモリの浪費をしているとしたら批判されてしかるべきだ。
        親コメント
  • 限度 (スコア:3, すばらしい洞察)

    by Anonymous Coward on 2006年02月15日 17時16分 (#884050)
    >「それは仕様だ」という記事がでていることを 本家記事が伝えている。
    >前後のcasheを保持しておいた方がWeb巡回の際の利便性がよいという立場からの設計だそうだ。

    限度があるよね。
    • Re:限度 (スコア:2, すばらしい洞察)

      by Anonymous Coward on 2006年02月15日 17時29分 (#884065)
      多分、限度が人によって環境によって変わるのが悩みの種。
      親コメント
  • AJAX (スコア:3, すばらしい洞察)

    by Anonymous Coward on 2006年02月15日 22時11分 (#884231)
    最近、AJAXとかがはやっていますけど、実は、AJAXがかなりメモリを食うので、正直、このままでいいのかなぁとか思っていたのですが、Firefoxの仕様でこのような部分があると、その傾向により拍車がかかり問題がより深刻になりそうですね。
    • Re:AJAX (スコア:2, 参考になる)

      by Anonymous Coward on 2006年02月16日 2時38分 (#884354)
      >AJAXがかなりメモリを食うので

       (別に煽りでなく)具体的なソースとか、そういうサイトありますか?これは、Ajaxは、リッチなUIのために画像を多用する傾向にあるから、という理解でいいのかな? JavaScript自体が消費するメモリは、大した物ではないはずです。IEみたいにJavaScriptによって引き起こされるメモリーリークがあるのなら別ですが、Firefoxで、この手のメモリリークは聞いたことありません。ここが参考になるかも。

       IEのメモリリーク問題:http://p2b.jp/index.php?UID=1131336575/ [p2b.jp]
      親コメント
  • 初期設定値 (スコア:2, 参考になる)

    by Anonymous Coward on 2006年02月15日 17時24分 (#884060)
    自分のFirefox1.5.0.1(WindowsXP home SP2)を確認してみたら初期設定値として-1が設定されてました。

    このままでいい、ってことだと思うけど、なんでタレコミ人と違うんだろう?プラットフォームの違い?
  • by tnk (13707) on 2006年02月15日 18時13分 (#884103)
    みなさん,そんなで済んでるんですか?

    タスクマネージャでみると,今現在firefox.exeの「メモリ使用量」が「396,192K」とか表示されているんですが。500Mいくことも珍しくないです。

    1Gの物理メモリをつんだWindows XPでFirefox 1.5.0.1をつかってます。
    • リークするという話もありますが、Gecko エンジンが伝統的に画像を一旦実サイズで展開する、という困った仕様の方を先に直して欲しい。切に希望します。このせいで Firefox が 1GB メモリを全部食いまくってまともに動かなくなるのが毎日数回 orz

      #画像レンダリングの処理は、穴の問題を覗けば正直 IE の方がずっと良くできていると思う。

      親コメント
    • 私も最近までそんな感じで油断すると500Mとか
      喰いまくってました。
      よく皆平気だなと思いつつ拡張機能を削ぎ落としていったら、
      増えても200Mくらいまで減りました。
      誰かリークしてたなと。

      1GのメモリのXPで1.5.0.1
      親コメント
  • 起動の高速化などのために、使用ライブラリをスタティックリンクしているぐらいなんで、開発者的には「メモリ使用量は気にしないぜ!」ぐらいの勢いなんじゃないでしょうか。

    コンパイルオプションでいろいろいじれることはいじれるんですが、アップデートとかを考えると公式に「通常版」「機能限定軽量版」とかをリリースしてくれませんかねぇ。
    • by esumi (15966) on 2006年02月16日 1時18分 (#884335)
      っていうかFirefox自体がMozillaの軽量版として
      作られ始めたんじゃなかったでしたっけ。

      とは言うものの、携帯用としては競争相手(?)の
      Operaの名前が現状は目立ちますし、
      (単に開発するつもりがないだけでしょうが)
      そういった意味では軽量化の余地は結構あるのかも。

      #モバイル用のFirefoxもちょっと見てみたいかなあ
      親コメント
  • by tomone (15592) on 2006年02月15日 23時06分 (#884260) ホームページ
    家では、Athlon64 3500+、メモリ1GB、XP SP2 で使ってます。
    会社では Pentium4-M 1.6GB、メモリ 512MB、XP SP1 で使ってます。
    が、家の方が遅いです。

    どうも画像縮小があると劇的に遅くなります。
    IMG タグで画像を縮小させていっぱい貼り付けているページなど、
    システム全体が止まるくらい重くなります。

    が、会社ではそんなページ見ても普通に表示されます。

    この差は何なのかな? と。
    --
    TomOne
    • by Artane. (1042) on 2006年02月16日 1時42分 (#884347) ホームページ 日記
      画像展開の方法の問題 [srad.jp]ではないかと。
      これはこれで「正しい」(基本に忠実であるという意味で)プログラム手法であるのですが…下手に最適化してメモリリークであぼーんしまくるよりはいいのではないかと。

      と言うことで、
      >どうも画像縮小があると劇的に遅くなります。
      >IMG タグで画像を縮小させていっぱい貼り付けているページなど、
      >システム全体が止まるくらい重くなります。

      これは、見ているページの方でも配慮して貰わないといけない問題では無いかと思いますよ。
      サムネイルを作るのでは無く実画像を送ってブラウザのレンダラに縮小させるというのはブラウザの仕様云々以前に回線帯域の無駄遣いのように思うのですが…
      --
      --暮らしの中に修行あり。
      blogはじめました。 [hatena.ne.jp]
      親コメント
  • user_pref (スコア:2, 参考になる)

    by Anonymous Coward on 2006年02月16日 10時29分 (#884449)
    user_pref("browser.cache.disk.capacity", 4096);
    user_pref("browser.cache.memory.capacity", 4096);

    これで随分軽快になった稀ガス。
    firefox / mozilla ともども。
  • 十分メモリの空きがあっても重いような気がするんですけど、なんでなんでしたっけ。
  • バグではないけど (スコア:1, すばらしい洞察)

    by Anonymous Coward on 2006年02月15日 17時15分 (#884047)
    「それは仕様です」って叩かれそうな言い方ですね。

    それはいいとして、メモリキャッシュ?の保持量を調整するUIくらい用意した方が良いと思います。
    Firefoxが対象としている全てのユーザーにabout:configで…なんて言えないだろうし。
  • by Anonymous Coward on 2006年02月15日 17時23分 (#884059)
    単なる仕様を検討を記事にしてどうする?
    ってか、前から知られていることを改めてBenが解説しただけじゃん。そんなにFirefoxのメモリって気にしているの?

    256Mで一日立ち上げっぱなしのユーザーより。
    • by Anonymous Coward on 2006年02月15日 18時49分 (#884124)
      たまにFirefoxでもフリーズすることがある(それこそ6000x4000の画像ふんぢゃったときとか)ので強制終了させると、
      Windowsのバグ報告システムがそのアプリが使っていたメモリ使用状態を精査するために
      同じだけの使用量を確保するときがあるんですよ。

      タスクマネージャ見てると500MBのメモリx2のアプリが延々とメモリアクセス(スワップアウトしてるのでHDDガリガリ)して
      当然重いものだから全然終わんなくて…(涙)
      なんてことが続いてました。
      #タスクマネージャで強制終了するとバグ報告しないので助かるんですけど。
      親コメント
      • バグ報告「が動く」ことで、不都合が起きているのであれば、バグ報告を無効にしてみてはいかがでしょう?

        なんらかの状況で、無効にできない or それ以外の理由ならすみません。

        [コントロール パネル]-[システム]でシステムのプロパティ]から[詳細設定]に入って、[エラー報告]で向こうにできると思われます。

        Firefox使っていないので、はずしてますかね??(それともすでに無効済みですかね)

        ポインタ:

        http://www.atmarkit.co.jp/fwin2k/win2ktips/527apperror/apperror.html
        親コメント
    • by Anonymous Coward on 2006年02月15日 21時07分 (#884192)
      >単なる仕様を検討を記事にしてどうする?

      「軽い」ことを売りにしている(してるよね?)アプリがメモリ1GBを前提にしていたら、そりゃ開発環境について問い直されるべきだよね。
      #MicroSoftがメモリ20GB超の環境で開発して「うちでは問題なかったですけど?」と言ったらキレルでしょ?

      >ってか、前から知られていることを改めてBenが解説しただけじゃん。

      レス数 [srad.jp]みると、それほど広くは知られてなかったようですね。
      #つか、about:config [about]の項目って全部見てる?

      >そんなにFirefoxのメモリって気にしているの?

      何にせよメモリ占有量は気にしてますよ。だって少ない方がイイジャナイ
      親コメント
  • by Anonymous Coward on 2006年02月15日 20時25分 (#884162)
    可愛い位じゃないっすか?
    Safariなんか,ページ開きたくると軽く500MB以上いくんですが....orz

    #CPUパワーも持ってかれるし....
    #フレームのもとがつけられそうなのでAC。
typodupeerror

UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie

読み込み中...