メモリ使用量スレッド FAQ

2006年2月7日(火) 0時47分 by level
B ?

PluginDoc: Firefox Memory Usage FQA(旧The one and only "Memory usage" thread & FQA - MozillaZine Forums) の翻訳です。(4月13日分まで更新)

目次

このスレッドについて

はじめに

Firefox のメモリ使用量は Firefox 1.5 がリリースされてから非常にホットな話題となっています。このスレッドは Firefox のメモリ使用量を最小にするためのノウハウ、Firefox でメモリリークを起こすと分っていること、何がメモリリークで何がそうでないか、メモリリークの修正状況、協力の仕方を提供するために作成されています。

スレッドノート
  • 議論は歓迎します(実際、奨励されます)。しかしながら、このスレッドにおける誤った行動は一週間でごみ箱行きにされるでしょ。反論や議論は可能ですが、礼儀は尽くすべきです。
  • FQA は "Frequently Questioned Answers" の略であり、このスレッドに適しています。
謝辞

このスレッドの情報と解決策は多くのユーザ、スレッド、MozillaZine ナレッジベースに基づいています。

Special thanks to:
Jesse Ruderman
Steve England
Fellow old timer schapel

テーマ、拡張機能、プラグイン

テーマと拡張機能

テーマと拡張機能はメモリ使用量を著しく増大させる場合があります。テーマや拡張機能が問題を引き起こしているかどうかは Firefox をセーフモードで実行してみてください。既知のメモリリーク拡張機能の項も参照してください。

Adblock

Firefox 1.5 で古いバージョンの Adblock を使用するのは一般的に避けたほうがよく、メモリ使用量を増加させると報告されています。Firefox 1.5 ユーザは AdBlock Plus を使用するか、または Adblock 0.5.3.042 にアップグレードするべきです。まだ Firefox 1.5 をインストールしていなければ、Adblock をアンインストールして、Firefox 1.5 をインストールする前に Firefox を2回再起動してください。

Fasterfox

Fasterfox 拡張機能は閲覧しているページに含まれる静的なリンクをすべて先読みする機能を有効にする設定 ("Enhanced Prefetching") を持っています。これはデフォルトではオフです。これをオンに設定すると、(ページを見る前に先読みするので)ページの読み込み時間を低下させ、同時にメモリ使用量を増加させます。

Firefox Preloader

Firefox Preloader を使うとメモリ使用量を増加させます。必要の無いときには無効にするとメモリを節約できます。

プラグイン

いくつかのプラグイン、特に Adobe Reader と Java は多くのメモリを使用します。プラグインは使用後に開放されないので、メモリを削減するには Firefox を再起動する必要があります。

Java

Java ユーザは Java Runtime Environment 1.5.0_06 にアップグレードすべきです。Java コントロールパネルを使用する Java コンソールをオフにするとメモリ使用量を削減できます。

Adobe Reader

Adobe Reader 6.0 以上 7.0 未満は大量のメモリを使用します。Adobe Reader 7.0.5 へのアップグレードはメモリ使用量を削減できます。使用しない Adobe Reader プラグインの無効化もまた効果があります。

Firefox Tweaks

Firefox のメモリキャッシュ

デフォルトでは、Firefox は固定サイズのキャッシュを使用せず、システムメモリの一定割合を使用します。通常、固定サイズのキャッシュの設定はメモリ使用量を削減します。大抵は4~8MBもあれば十分です。固定サイズのキャッシュを設定するには、about:config を利用して以下の設定を追加します:
browser.cache.memory.capacity
これは整数値の設定であり、使用したいキャッシュの量を KB 単位で設定します。

Firefox がどのようにメモリキャッシュサイズを設定するかに関して議論がありました。この件に関するさまざまな議論は bug 105344bug 204164bug 296538 を参照してください。

メモリキャッシュを完全に禁止するには、browser.cache.memory.enable を false に設定します。これは明らかな速度低下と他の面倒な現象も引き起こすので、極端にメモリが不足しているのでなければ推奨できません。

最小化時のメモリ使用量

すべての Firefox ウィンドウを最小化した際に Firefox のメモリ使用量を切り詰めることを可能とする設定があります。この設定は Windows 専用です。有効にするには、about:config を利用して config.trim_on_minimize を true に設定します。

高速 Back/Forward

Firefox 1.5 は新しい高速な Back/Forward 機能 (bfcache) を装備しており、これは戻る/進むボタンが使用されたときにページの表示速度を非常に短縮します。この機能はメモリ使用量を増加させます。

これを無効にするには、about:config を利用して browser.sessionhistory.max_total_viewers を0に設定します。完全に無効にする代わりに保存するページ数を制御することもできます。これは bfcache による使用メモリを制御: browser.sessionhistory.max_total_viewers に記載されています。メモリ使用量の合計はページのサイズとコンテンツに大きく影響されることに注意してください。

ブラウザ履歴

ブラウザの履歴保存数を極端に大きな値に設定するとメモリ使用量が増加します。このことから履歴保存数を適度なレベルに維持することが推奨されます。

ダウンロードマネージャ

ダウンロード履歴をこまめにクリアするとメモリ使用量を削減できます。

その他の問題

JavaScript

大量の(もしくは粗悪な)JavaScript を含むページはメモリ使用量を増加させます。サイトが JavaScript を使用できるかをコントロールする NoScript を使用することによりこの問題に対応できます。

プロファイルの破損

プロファイルの破損はメモリ使用量の増加を含むさまざまな異常動作を引き起こします。プロファイルが破損していると疑われるとき、または他にやるべきことが無いときは、新しいプロファイルを作成してみてください。

バグと修正

Firefox 1.5.0.2 での修正

以下のメモリリークは Firefox 1.5.0.2 で修正済みです。

  • Bug 321283 - Using Find causes documents to leak
  • Bug 323532 - Leak when using history autocomplete
  • Bug 323377 - Lots of leaks in nsInternetSearchService
Firefox 1.5.0.1 での修正

以下のメモリリークは Firefox 1.5.0.1 で修正済みです。

  • Bug 316775 - leak when selecting
  • Bug 317478 - leaks due to global scope polluter being removed from not enough (?) prototype chains
Gecko 1.8 Branch での修正

以下のメモリリークは Gecko 1.8 branch で修正されます。

  • Bug 316775 - leak when selecting
  • Bug 317478 - leaks due to global scope polluter being removed from not enough (?) prototype chains
  • Bug 319980 - javascript garbage collector not run when supposed to, leading to "memory leak"
  • Bug 323454 - [FIX]Don't leak the channel and XMLHttpRequest object if AsyncOpen fails
  • Bug 321283 - Using Find causes documents to leak
  • Bug 323532 - Leak when using history autocomplete
  • Bug 323377 - Lots of leaks in nsInternetSearchService

Gecko 1.8 branch での修正は Firefox 2.0 のような将来のブランチからのリリースに含まれます。これらの修正は、将来の Firefox 1.5.x にも含まれるかもしれません。

Trunk での修正

以下のメモリリークバグは trunk で修正されます:

  • Bug 241518 - calling addEventListener with a closure holding a content node leaks the document
  • Bug 315708 - Should release found link and current window object from nsTypeAheadFind.cpp
  • Bug 315708 - Should release found link and current window object from nsTypeAheadFind.cpp
  • Bug 315951 - unknown content type dialog leaks domwindow
  • Bug 316775 - leak when selecting
  • Bug 317478 - leaks due to global scope polluter being removed from not enough (?) prototype chains
  • Bug 319980 - javascript garbage collector not run when supposed to, leading to "memory leak"
  • Bug 320211 - parser-related leak when loading DOM inspector in Firefox
  • Bug 321040 - observer service should remove null weak references from observer lists when enumerating
  • Bug 321283 - using Find causes documents to leak
  • Bug 323377 - Lots of leaks in nsInternetSearchService
  • Bug 323441 - Memory leak if a site sets location and then document.writes (e.g. when visiting www.economist.com)
  • Bug 323454 - [FIX]Don't leak the channel and XMLHttpRequest object if AsyncOpen fails
  • Bug 323532 - [FIX] Leak when using history autocomplete
  • Bug 323534 - createTreeWalker can cause leaks due to cycles created by closures
  • Bug 325305 - minor memory leak in CERT_FindCertByNameString
  • Bug 326491 - Leaked observer service leaks things on shutdown
  • Bug 327670 - Memory leak in MarkOutOfFlowChild
  • Bug 330649 - leak nsContentShellInfo objects
  • Bug 331706 - Leak when scrolling

trunk は Mozilla の開発が行われる最前線です。trunk での修正は Firefox 3.0 に含まれます。Firefox 1.5 と Firefox 2.0 にも含まれるかもしれません。

既知のリークを起こす拡張機能

以下の拡張機能はメモリリークを起こすことが知られています

修正済み
未修正
組み合わせ

Flashgot と Adblock Filterset.G Updater の組み合わせはリークを起こすことが知られています [Bug 324586]。

協力するには?

他の人を助ける

もし誰かが Fireofx のメモリリークに関する問題で困っていたら、このスレッドを見せてください。新しい情報が定期的に投稿されるので、答えを得るための最適な場所です。

メモリリーク検出ツール

David Baron が最近、テスターが Firefox でメモリリークを削減するときに効果のあるツールを開発しました。もし、Firefox の開発バージョン (Firefox 1.5 ではない) を利用しているなら、このツールの詳細に関しては彼のウェブログ投稿 Please file good memory leak bugs を参照してください。

リークではないもの

Firefox のメモリ使用量はいつも元に戻るわけではない

これは一般的には問題ではなく、メモリリークを示すものではありません。なぜでしょうか? Firefox がメモリを使用しなくなったとき、それはヒープに戻されます。しかし、オペレーティングシステムは Firefox がそれをもう使わない場合でもこのメモリを使用中であるものとして報告します。

このことによる共通の症状は、Firefox によって使用されるメモリの使用量は増えることはあっても減ることは無く、同じ量をキープするということです。

大きな画像は圧縮されない

Firefox は画像を表示するとき、それを伸張します。メモリキャッシュと高速 Back/Forward (bfcache) を組み合わせると、大きな、あるいは大量の画像を含むページに対してブラウザが大量のメモリを使用することになります。これはリークではありません。なぜなら、メモリが必要でなくなったときにはヒープに返されるからです。

翻訳

最終更新: 2006年12月30日(土) 17時15分

コメント

コメントはありません。

トラックバック (4)

トラックバックは検索対象外です。