Firefoxのメモリ大量消費は『仕様』、だが回避方法あり 144
便利なような余計な御世話なような… 部門より
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とか言われているけど (スコア:4, 参考になる)
MemoryLeakとメモリーの使いすぎは違います。
MemoryLeakとは使用したメモリーを解放しわすれることで、
後で開放する気があるなら(そしてそれができるなら)
MemoryLeakではありません。 今回のキャッシュは基本的には、
ちゃんと開放されるのでリークではありません。
# しかし実際、FirefoxはいくつかMemoryLeakするみたいですし、
# 許可なく大量のメモリーを使っているのも事実ですし...うーん
Re:本家では何でもかんでもMemoryLeakとか言われているけど (スコア:2, 参考になる)
先の blog などでは、例えば RAM が 1GB の場合で cache ページ数が 8 となっています。平均的な 1 ページ当たりのメモリ消費量が 4MB となっていますから、例えばタブを 15個開いていて、それらが全て 8ページ分の履歴を持つと考えるとそれだけで 15x8x4MB = 480MB。
履歴を持たない(開いたばかりの)タブがあることなどを考えて平均 4ページ程度としても 240MB のメモリをこの機能のために使うことになるでしょうか(考え方が間違っていたら御指摘ください)。
個人的にはやはり使いすぎな気がしますし、高速に戻るナビゲーションなんて 1つ手前まであれば十分な気がします。
Re:本家では何でもかんでもMemoryLeakとか言われているけど (スコア:3, 参考になる)
8とかいうのは、キャッシュされるページのセッション全体での最大数だそうです。なおかつこの最大数はメモリ搭載量に依存し、Boris Zbarskyはコメントで「大半のユーザーはたいていの場合3ページとか5ページとかになる」と言っています。
Re:本家では何でもかんでもMemoryLeakとか言われているけど (スコア:2, すばらしい洞察)
ディスクキャッシュだけで十分高速だし、
直近のものならOSのディスクキャッシュにも乗ってるからさらに高速。
屋上屋なFirefoxのオンメモリキャッシュは費用対効果が非常に悪い。
タブブラウザはたどる可能性のあるリンクを片っ端から
新タブで開いて先読みさせておくというスタイルで使っている限り
高速に戻る必要性がそもそもなかったり。
それにメインメモリが十分あまっていたらそれを全部使っていいかというとそうでもない。
OSのディスクキャッシュが消えるし他のプロセスもディスクにスワップアウトしがち。
Firefox開発者が自分の製品の評価を上げる為だけにこんな
メモリの浪費をしているとしたら批判されてしかるべきだ。
限度 (スコア:3, すばらしい洞察)
>前後のcasheを保持しておいた方がWeb巡回の際の利便性がよいという立場からの設計だそうだ。
限度があるよね。
Re:限度 (スコア:2, すばらしい洞察)
Re:限度 (スコア:1, すばらしい洞察)
最小システム構成でテストしてないっていってるようなものじゃない?
割と速い回線を使ってれば前後のキャッシュなんてどうでもいい。さらに言えばタブで新しいリンクを開くからわざわざ前のページに戻って再描画させるようなこともしない。
そのためのタブブラウザだと思ってたのに。。。
Firefoxはキャッシュの保持形態が嫌 (スコア:2, 参考になる)
キャッシュフォルダからファイルを拾えたのに
Firefoxではキャッシュがそのまま画像やテキストファイルということがないので不便になって困ります。
0.96から使い続けていますが、セキュリティよりもバージョンアップ縛りを優先させた問題や
以前から言われているメモリの問題を仕様と言い逃れるなど、開発者の都合ばかり優先されて
利用者ないがしろの傾向が強まったのではないかと思えて仕方ありません。
AJAX (スコア:3, すばらしい洞察)
Re:AJAX (スコア:2, 参考になる)
(別に煽りでなく)具体的なソースとか、そういうサイトありますか?これは、Ajaxは、リッチなUIのために画像を多用する傾向にあるから、という理解でいいのかな? JavaScript自体が消費するメモリは、大した物ではないはずです。IEみたいにJavaScriptによって引き起こされるメモリーリークがあるのなら別ですが、Firefoxで、この手のメモリリークは聞いたことありません。ここが参考になるかも。
IEのメモリリーク問題:http://p2b.jp/index.php?UID=1131336575/ [p2b.jp]
初期設定値 (スコア:2, 参考になる)
このままでいい、ってことだと思うけど、なんでタレコミ人と違うんだろう?プラットフォームの違い?
Re:初期設定値 (スコア:1)
日本語版だから (スコア:1)
Re:初期設定値 (スコア:1, すばらしい洞察)
Re:初期設定値 (スコア:3, 参考になる)
タレコミにリンクが書いてある,browser.sessionhistory.max_total_viewersの説明を読むと,初期値は「-1」が正解のようですね。
「初期値は『50』」というのは,タレコミ人の見間違いではないでしょうか。
Re:初期設定値 (スコア:3, 興味深い)
という訳で困った時のLXR。
後者には次のようなコメントがあるのでこちらでしょう。
コードはここ [mozilla.org] (Benのweblogのはtrunkのもの)。計算方法や固定値に変更するのは簡単だけど、じゃ幾つが良いんでしょうかね……。
Re:初期設定値 (スコア:1)
browser.sessionhistory.max_total_viewers
が-1
browser.sessionhistory.max_entries
が50でした。
タレコミ人はbrowser.sessionhistory.max_entriesを見ているのではないでしょうか?
となるとbrowser.sessionhistory.max_entriesを0にするといいってことはあるんでしょうか?
Re:初期設定値 (スコア:3, 参考になる)
と言うときはさっさとぐぐったほうが早いです。:-P
browser.sessionhistory.max_entries
-> ロケーションバーの入力履歴の最大数
browser.sessionhistory.max_total_viewers
-> キャッシュメモリのページ数
てことで、browser.sessionhistory.max_total_viewersを0に設定するのが正しいようです。
# 間違ってたらマイナスモデよろしくです。
... from rakehelly programmer.
「100MB~200MBのメモリ使用量」? (スコア:2, 参考になる)
タスクマネージャでみると,今現在firefox.exeの「メモリ使用量」が「396,192K」とか表示されているんですが。500Mいくことも珍しくないです。
1Gの物理メモリをつんだWindows XPでFirefox 1.5.0.1をつかってます。
Re:「100MB~200MBのメモリ使用量」? (スコア:3, 参考になる)
#画像レンダリングの処理は、穴の問題を覗けば正直 IE の方がずっと良くできていると思う。
Re:「100MB~200MBのメモリ使用量」? (スコア:2, 参考になる)
使ってみることをおすすめします。
感覚的には、起動はIEよりちょっとだけ遅いくらい、
レンダリングはひょっとするとIEよりも速いくらい、
IEのプアなCSS表現力も考慮すると驚異的な速さだと言っていいと私は思います。
Geckoの(速度に関する)実力はFirefoxなどで推し量っては間違えます。
んで、でかいHTML [cocolog-nifty.com]をレンダリングさせたらどうなんだと思ってやってみたら、
IEのほうが速かったですw えとGeckoの方が速いというのは訂正します。
FirefoxはXULが足を引っ張っているのではないかと予想しています。
もっさりした操作感はこれが原因でしょう。
ちなみにK-Meleonはレンダリング以外の動作もきびきび動きます。
ただ、PocketPC版はない(と思う)のでそっちはどうだかわかりませんけど。
ちなみにメモりはいちいちOSに返却してるみたいです。
/.のこのストーリーのコメントを全部表示させた状態で24M弱、
Yahoo! JAPANのトップページを表示させた状態では24M強です。
この程度ですと大富豪とまでは呼べない気がします。
って基準はなんだ? とかいう話になっても困りますがw
とはいえ常用してるのはFirefoxなんですけどね。
以前触ってみて、あまりの軽さに衝撃をうけて乗り換えを検討したのですが、
便利な拡張機能の存在が決め手となってFirefoxに戻ってしまいました。
Re:「100MB~200MBのメモリ使用量」? (スコア:1)
喰いまくってました。
よく皆平気だなと思いつつ拡張機能を削ぎ落としていったら、
増えても200Mくらいまで減りました。
誰かリークしてたなと。
1GのメモリのXPで1.5.0.1
Re:「100MB~200MBのメモリ使用量」? (スコア:1)
軽量版とかリリースしないんでしょうか。 (スコア:2, 興味深い)
コンパイルオプションでいろいろいじれることはいじれるんですが、アップデートとかを考えると公式に「通常版」「機能限定軽量版」とかをリリースしてくれませんかねぇ。
Re:軽量版とかリリースしないんでしょうか。 (スコア:2, すばらしい洞察)
作られ始めたんじゃなかったでしたっけ。
とは言うものの、携帯用としては競争相手(?)の
Operaの名前が現状は目立ちますし、
(単に開発するつもりがないだけでしょうが)
そういった意味では軽量化の余地は結構あるのかも。
#モバイル用のFirefoxもちょっと見てみたいかなあ
メモリ使用で重いの? (スコア:2, 興味深い)
会社では Pentium4-M 1.6GB、メモリ 512MB、XP SP1 で使ってます。
が、家の方が遅いです。
どうも画像縮小があると劇的に遅くなります。
IMG タグで画像を縮小させていっぱい貼り付けているページなど、
システム全体が止まるくらい重くなります。
が、会社ではそんなページ見ても普通に表示されます。
この差は何なのかな? と。
TomOne
Re:メモリ使用で重いの? (スコア:2, 参考になる)
これはこれで「正しい」(基本に忠実であるという意味で)プログラム手法であるのですが…下手に最適化してメモリリークであぼーんしまくるよりはいいのではないかと。
と言うことで、
>どうも画像縮小があると劇的に遅くなります。
>IMG タグで画像を縮小させていっぱい貼り付けているページなど、
>システム全体が止まるくらい重くなります。
これは、見ているページの方でも配慮して貰わないといけない問題では無いかと思いますよ。
サムネイルを作るのでは無く実画像を送ってブラウザのレンダラに縮小させるというのはブラウザの仕様云々以前に回線帯域の無駄遣いのように思うのですが…
user_pref (スコア:2, 参考になる)
user_pref("browser.cache.memory.capacity", 4096);
これで随分軽快になった稀ガス。
firefox / mozilla ともども。
重いのは本当にメモリを食ってるせい? (スコア:1)
Re:重いのは本当にメモリを食ってるせい? (スコア:4, 参考になる)
ConfigtionMania [lycos.co.uk]で色々調整か、
最適化・非公式ビルド [geckodev.org]デスヨ。
Re:重いのは本当にメモリを食ってるせい? (スコア:1)
バグではないけど (スコア:1, すばらしい洞察)
それはいいとして、メモリキャッシュ?の保持量を調整するUIくらい用意した方が良いと思います。
Firefoxが対象としている全てのユーザーにabout:configで…なんて言えないだろうし。
Re:バグではないけど (スコア:5, おもしろおかしい)
Re:バグではないけど (スコア:4, おもしろおかしい)
配給:20th century fireFOX
Re:バグではないけど (スコア:1)
指定していますが、about:cacheで見るとこうなってるわけです。
Memory cache device
Number of entries: 421
Maximum storage size: 2000 KiB
Storage in use: 17920 KiB
Inactive storage: 0 KiB
上限設定が効いてないんですが、なんかおかしくないですか。
Session Saverとか入れてるせい?
Re:バグではないけど (スコア:3, 参考になる)
見ましたが。
一つ一つの画像データをキャッシュする際に使用できるメモリの最大値であって、
キャッシュメモリ全体の最大値ではない、ということですか。
これはまぎらわしい……それなら200kbくらいで十分かも。
Re:バグではないけど (スコア:1, すばらしい洞察)
なんでこれが記事になる? (スコア:1, すばらしい洞察)
ってか、前から知られていることを改めてBenが解説しただけじゃん。そんなにFirefoxのメモリって気にしているの?
256Mで一日立ち上げっぱなしのユーザーより。
Re:なんでこれが記事になる? (スコア:3, 興味深い)
Windowsのバグ報告システムがそのアプリが使っていたメモリ使用状態を精査するために
同じだけの使用量を確保するときがあるんですよ。
タスクマネージャ見てると500MBのメモリx2のアプリが延々とメモリアクセス(スワップアウトしてるのでHDDガリガリ)して
当然重いものだから全然終わんなくて…(涙)
なんてことが続いてました。
#タスクマネージャで強制終了するとバグ報告しないので助かるんですけど。
Re:なんでこれが記事になる? (スコア:2, 参考になる)
なんらかの状況で、無効にできない or それ以外の理由ならすみません。
[コントロール パネル]-[システム]でシステムのプロパティ]から[詳細設定]に入って、[エラー報告]で向こうにできると思われます。
Firefox使っていないので、はずしてますかね??(それともすでに無効済みですかね)
ポインタ:
http://www.atmarkit.co.jp/fwin2k/win2ktips/527apperror/apperror.html
Re:なんでこれが記事になる? (スコア:2, すばらしい洞察)
「軽い」ことを売りにしている(してるよね?)アプリがメモリ1GBを前提にしていたら、そりゃ開発環境について問い直されるべきだよね。
#MicroSoftがメモリ20GB超の環境で開発して「うちでは問題なかったですけど?」と言ったらキレルでしょ?
>ってか、前から知られていることを改めてBenが解説しただけじゃん。
レス数 [srad.jp]みると、それほど広くは知られてなかったようですね。
#つか、about:config [about]の項目って全部見てる?
>そんなにFirefoxのメモリって気にしているの?
何にせよメモリ占有量は気にしてますよ。だって少ない方がイイジャナイ
100MB〜200MBなら (スコア:1, 興味深い)
Safariなんか,ページ開きたくると軽く500MB以上いくんですが....orz
#CPUパワーも持ってかれるし....
#フレームのもとがつけられそうなのでAC。
Re:気にしたことは無かったけど (スコア:2, 参考になる)
メモリが2Gあるので色々試みたのですが、なしに設定しても残ったり、RAM Diskに移動しても設定が反映されなかったり……。
Googleで探しても同様の症状の報告が見つからないので、私だけかも知れませんが。
ちなみに、hiberfil.sysはコンパネの電源オプションから休止状態を無効にすると消えますよ。
# オフトピですがご容赦を。
Re:気にしたことは無かったけど (スコア:2, 参考になる)
>なしに設定しても残ったり
Windows2000だと最低**Mbyte必要とかがあったりしますが
(0にすると起動時に勝手に作られる)
WindowsXpでは0にできたような。
今、全部消してみましたが、0になってますね。
ただ、設定する画面の下の方には
「総ページングファイルサイズ 最小限:2MB」ってなってますけど。
# どうせそんなにメモリ必要ないから、しばらくこれで使ってみます。
>RAM Diskに移動しても設定が反映されなかったり……
これは仕様で「HDDとして見えるもの。にしかページファイルが設定できない」という記憶が。
microsoftのサイトのどこかに正式な答えがあったように思います。
Re:気にしたことは無かったけど (スコア:1)
ふむ、やはり私のやり方がおかしいのかも知れないですねぇ……。
また色々試してみます。
> これは仕様で「HDDとして見えるもの。にしかページファイルが設定できない」という記憶が。
ちゃんと、HDDに見せかけるRAM Diskドライバ使ってましたよ。
ここの [vector.co.jp]ERAMです。
Windows2000では問題なくRAM Diskにページファイルを設定出来たんですけどねぇ。
# 嗚呼、オフトピが伸びていく。
Re:気にしたことは無かったけど (スコア:2, 参考になる)
ERAM for Windows よくある質問 [vector.co.jp]
Re:気にしたことは無かったけど (スコア:1)
嗚呼、駄目人間だなぁ、私。
教えて下さってどうもありがとうございます。
Re:気にしたことは無かったけど (スコア:1, 興味深い)
Norton Anitivirusの特定の設定項目が有効になっていると,
ページファイル関係の設定が効かなくなったなった経験があります.
(Autoprotectの起動に関する設定項目だとは思いましたが,正確な項目名は忘れました.)
もし,NAVが入っているようなら,その辺りが原因かも.
Re:Firefoxのメモリ大量消費は『仕様』、だが回避方法あり (スコア:2, おもしろおかしい)
で厚くなる弾幕の方が理不尽です。
Re:富豪的プログラミング (スコア:2, 興味深い)
メモリの利用とか実効効率の悪さを競うものではありません。単にそれを気にしないだけです。
なので手を抜いた結果、メモリの利用効率が上がることもありえるわけです。
ページをキャッシュしておくというのは積極的に速度を稼ぐためにコードを書かなければなりません。
翻って、
> 毎回レンダリング結果を使い捨てにすべき
というのは、字面からは積極的に何かしてるように見えますが、
実は何も工夫をしないとこうなるわけでして、
コードを書く労力はこちらのほうが少ないのです。
なので富豪的プログラミングの観点からはキャッシュを保持しておくほうが
ちまちまと貧乏くさいプログラミングということになります。