Firefox3を高速化するための方法
# 筆者はFirefox4に移行中ですのでそのうちFirefox4にまとめたいと思います
Firefox3は起動が遅かったり、妙に重かったり、再起動に5分は掛かったり、放置しておいたらメモリが500〜900MBくらいくってたり、その辺を解消しようと言う話。
Firefoxは壮絶にメモリーリークしている気がします。
また、数秒ごとに固まる現象が起きており、多分メモリーリークのせいでは?(GCが働くとか)などと思ったりしています。
ブラウジングの高速化よりは、Firefox自体の高速化(軽量化)の話)。
とはいえ、このページでは両方ともまとめて扱っています。
指針としては、メモリー喰いすぎず、全体的に軽く、ブラウジングもそこそこ速くなる、というバランス加減を目指しています。
こちらで、試行錯誤の記録を残しています→[チューニング] - 技術文化遺産復興日記
まだ解決できていません! 大体解決しました(え?してない?)
→原因はセッション復元機能の定期的に保存する機能のせいだったようです。解決策ありかも!(現在、検証中) というわけでもないようだ
→結局、解決しなかった (´・ω・`)
→ver 3.6にしたら大分緩和されました!
→BarTabアドオンが救世主になるかも…
→メインブラウザをChromeに乗り換えました
→Chromeも重い!!!!!!!
→ブラウザの使い方が悪いようなので自分という人間を管理できるように試みています
(具体的には最低限の拡張を使う、タブを立ち上げすぎないという方向性)
とりあえず、手っ取り早く筆者の行っている方法を知りたい場合は「現在の最適解まとめ」を御覧下さい
以下Firefoxをしばらく起動しているときの症状
参考:
上記の方と多分同じような症状
Firefoxの高速化(というか重くなるのを防ぐ)のために現在筆者の行っている最適解について(上から効果がありそうな順)
こんな感じです。極端な話これ以外のこのページに書いてあることはそんなに意味がない気がします(ただし、greasemonkeyやAutoPagerizeは便利すぎるのではずせませんでした)
筆者は最近はChromeを使ってますが、Firefox4が出た機会にまたもどろうと考えています
about:configで直接設定してもいいですが、
user.jsに書いておくとどこを変更したか、とか見やすくていいです。
user.jsに書いた後でFirefoxを起動すると、本来の設定に上書き設定されます。
デフォルトでは、最低90日、最高180日でかなり、
places.sqliteが肥大化する。
これを防止する設定。
再起動等がメッチャ早くなった。かなり効果ある気がします
気のせいでした、ダメポ…
「ツール」→「オプション」→「プライバシー」の「履歴」の「表示したページの履歴を少なくともxx日分は残す」の設定は、
「少なくとも」が曲者で、この設定だけでは履歴の保存日数が減らないらしい。よって、user.jsで詳細設定する。
// 表示したページの履歴を残す日数(7日間) user_pref("browser.history_expire_days", 7); user_pref("browser.history_expire_days_min", 7);
ちなみに、places.sqliteをSQLiteのDBを弄るツールにてVACUUMしてDBを小さくしておく必要アリ。
VACUUMが何故必要かというと、Firefoxで使っているデータベースエンジンのSQLiteは削除したデータを、実際には削除しないで放置するので自分で実際の削除をしないといけないのです。
(Firefoxがサポートしてそれくらい定期的に実行しろよ、という気はする)
(上とかぶっていますが)Firefoxで使われるDBに間して
を行うと「起動が速くなる」などの報告がブログなどで散見されます。
reindexに関しては、SQLite Optimizer という実験的アドオンにて、終了時に自動的に行うことができます。
しかし残念ながら、今のところ、このページで悩んでいる問題について特に目立った効果はないようです。
参考:
とりあえず、拡張を外しまくってみているのですが、ダメポ…。
それでも、メモリの増加速度は大分減りました。
ただし、一瞬止まるという現象は解決してません。
経過:Firefoxが重い…のをなんとしたいメモ - 技術文化遺産復興日記
最終手段にしたいです…。
参考:
最終的には、ビルド環境を作ってソースを追う羽目になるのでやりたくない、というのが正直な話…。
../メモリーリーク 独立してページ作りました。
その他噂系参考: [#ub917e55]
定期的に再起動する!!
今のところ多分ベストな解決方法→まあまあベターな感じ。
↓例えば以下のWindows VistaガジェットでFirefoxのメモリー使用量を監視します。
窓の杜 - 【REVIEW】プロセスのCPU使用率・メモリ使用量トップ5をサイドバーに表示「Top Five」
そして、メモリー消費が400MB〜500MBくらいになったら、Firefoxお再起動します。これでOK。
→しばらく使ってみましたが、根本的に解決してない気がします。
それでも定期的な再起動はかなり有効。動画が見たくなったら再起動してます。
↓再起動に便利なプラグイン(Ctrl+Alt+R一発再起動できます)
QuickRestart :: Firefox Add-ons
関連:
セッション復元のインターバルを長くする!!
セッション復元のための保存のインターバルを長くすること。具体的な方法としては、アドレスバーで「about:config」と入力しEnterキーを押すと、フィルターボックスが表示されますので、さらにフィルターボックスに「browser.sessionstore.interval」と入力しましょう。すると「10000("10秒に保存する"の意)」が表示されるはず。この数値を5分ごとの保存とするならば「300000」、2分なら「120000」など、任意の数字に変更すればOK。via: Firefoxでの動画サイトのイライラを解消する方法 : ライフハッカー[日本版] 仕事も生活も上手くこなすライフハック情報満載のブログ・メディア
これは疑ったことがありませんでした。
ということで、about:configを使うのもいいですが、記録が残るようにuser.jsにここでは書いてみましょう。
プロファイルディレクトリのuser.jsファイルを開きます。なかったら新規作成します。
そこに以下のように記述して、Firefoxを再起動します。
// セッション復元の保存のインターバルを設定(動画の定期フリーズ防止) // 5分に設定(2分なら 120000) user_pref("browser.sessionstore.interval", 300000);
TabMixPlusの独自セッションマネージャ使う場合はどうしたらいいんだろ(´・ω・`)
→「内臓のセッション復元機能を使用する」にチェックする。
(独自セッションをあきらめる)
→結局、直らなかった orz
けっきょく原因なんなんだよ!(´;ω;`)
関連:
アドオンをいくつもオンオフして検証していった結果、
汎用スクリプトなアドオンgreasemonkeyがある程度固まる原因ではないか?、ということがわかってきました。
greasemonkeyに入れているスクリプトを減らして様子見中です。
とくに全ページに適用する類は注意。
(検証中…)
→greasemonkeyアドオンを無効化したら固まることがかなり少なくなりました。
また、ブラウザの読み込みレンダリング動作自体が非常に軽くなりました(当然と言えば当然)。
→greasemonkeyは便利ですが、泣く泣くはずし中…。
Firefox 3.5でJavaScriptの動作はかなり軽くなったのですが、それでもやっぱり重いという。
→外すとネットライフに支障がでるので結局Greasemonkey入れて使ってます(´・ω・`)
autopagerizeが原因だったりする気もしないでもない…
上でgreasemonkeyアドオンを外しているのですが、
autopagerizeだけはどうしても外せないと拡張版をインストールして使ってみているのですが、
どうもautopagerizeで自動ページ送りしまくっていると、すぐにブラウザが固まるようになることに気づきました。
(主にTumblrのdashboardの流し見)
AutoPagerアドオンだとそんな固まる感じがしないでもない?(ただautopagerizeは動作自体がかるく自動ページ送りがメッチャ速いのでたくさんページ送りしてしまっているせいなのかも)
(検証中?)
Firefox 3.6ではニコニコ動画、Youtube等で数秒ごとに固まることは固まるけど、大分ガマンできるかな、というくらいになってきた(気がする)
以下改善点の引用。
Firefox 3.6改善: GCポーズ時間の短縮via: Firefox 3.6のJavaScript高速化技術まとめ | エンタープライズ | マイコミジャーナル
JavaScriptではガベージコレクタが定期的に実行され利用されていないメモリを開放している。GC実行中はすべてのJavaScriptが停止されるため、JavaScriptでアニメーションを実施している場合には一瞬画面が止まるような描画が実施されてしまう。Firefox 3.6では次のふたつの方法でGCポーズ時間の短縮を実現している。
freeコールで多大な時間が使われていることがわかったため、JavaScriptスレッドからは利用しなくなったメモリチャンクを待ち行列に追加する処理のみを実施するようにし、開放については他のスレッドからアイドル時間中や、ほかのプロセッサから実施するように変更。特にマルチコアシステムではこの効果の恩恵を受けやすい
従来の実装ではGCとJITがお互いに別々に動いていた。Firefox 3.6ではGCとJITを連動して動作させることで、GCがキャッシュやネイティブコードをクリアしてしまわないように変更した
BarTabというアドオンがこの問題に際してなかなかに素晴らしい解決策になりそうな予感がしてます。
簡単に言うなら起動時にページを読み込まないで、タブをクリックしたときに遅延ロードをするアドオンです。つまり、常にタブを数十個開いていて、起動時に前回のセッションを復元するような設定している人にはかなりよさげなアドオンではないかと。
このアドオンで解決される(と思われる)こと
欠点と思われること
アップデートでロードしてないタブのfaviconも表示されるようになりました!また、読んでいないタブを自動的にアンロードする(?)オプションもあり。
除外指定するページを指定できるようにならないかなー(´・ω・`)
(現在このアドオンを検証中です)
別のブラウザで見ればいいのではないか?という方法
Chromeや他のブラウザに現在見ているページのURLを渡すアドオンとして、Launchy があります。
動画がFirefoxでカクカクする問題はこれで解決できます。(解決になっているかは不明だけどとにかく手っ取り早い方法!!!!!)
動画再生だけなら、Chromeの他にOpenJaneと連携するための外部プレイヤーとして使われているStreamingPlayer.htaも使えます。(ただし、Launchyの設定ファイルへの追加が必要なのと、大概はプレイヤー部分だけの表示になります)
いいたいことはわかりますが、再現させて定量的に測る方法がわかんないんです…。
ページの表示はベンチマークっぽいものが取れるようです。
ページの表示の他に、
が測定できれば…
※ Google Chrome内蔵タスクマネージャ(Ctrl+ESC)のようにアドオンやページごとのメモリ消費やCPU占有率が表示できれば解決しやすそう
Google Chromeは構造上アドオンやuserscriptを別プロセスにわけているので測定しやすいみたいです。
(かなり意外なアドオンがメモリを食っていることがわかったり。アドオンとアドオンの組み合わせや、アドオンとあるページ固有のメモリ消費や大きな負荷は試行錯誤が要ります)
Show recent 10 comments. Go to the comment page.