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

Firefox 41、14年前に報告されたバグの修正でAdblock Plus使用時のメモリー消費量が大幅に減少 44

ストーリー by headless
現象 部門より
22日にリリースされたFirefox 41.0では、Adblock Plus使用時のメモリー消費量に関する問題が解消している(Adblock Plusのブログ記事VentureBeatの記事)。

Adblock Plusではエレメントを非表示化するために単一のスタイルシートを使用するが、旧バージョンのFirefoxでは各ページを読み込む際にスタイルシートのコピーを作成する。スタイルシートが使用するメモリーは数MB程度だが、iframeを含むページではiframeの数だけスタイルシートのコピーが作成されるため、メモリー使用量が大幅に増加することがある。極端な例としては、428個のiframeを含む「VIM Color Scheme Test」を表示する場合、Adblock Plusを有効にするとメモリー使用量が1GB以上増加していた。

Adblock Plus使用時にメモリー消費量が増加する問題は2014年3月にBugzillaで報告(バグ988266)され、同年5月にMozillaAdblock Plusの開発者が確認していた。この問題の大元になっているのはFirefox誕生前の2001年4月に報告されたバグ77999であり、バグ77999が修正されてスタイルシート関連のデータを共有可能になったことで、バグ988266の修正も可能になったとのことだ。その結果Firefox 41.0では、Adblock Plusを有効にしてVIM Color Scheme Testを読み込んだ際のメモリー使用量が以前のバージョンから1GB以上減少している。

なお、Google ChromeでもAdblock Plusを有効にしてVIM Color Scheme Testを読み込むとメモリー消費量が大幅に増加することが確認できた。また、AdBlockなど他の広告ブロック拡張機能でも同様の現象が発生するようだ。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2015年09月26日 21時57分 (#2889488)

    VIM Color Scheme Testのメモリ消費をテストしました。

    uBlock有 420,220K
    uBlock無 61,072K

    Firefox程でないにしろ、AdBlock以外でもメモリの消費が多くなることを確認しました。

  • 縦書き対応 (スコア:3, 興味深い)

    by Anonymous Coward on 2015年09月26日 19時16分 (#2889434)

    これで現行のほぼすべてのブラウザでルビと縦書きが使えるようになった。

  • by yutayu (47019) on 2015年09月26日 21時22分 (#2889475)
    頼む。
  • by Anonymous Coward on 2015年09月26日 19時46分 (#2889445)

    iframe滅ぶべし!!

    • by Anonymous Coward on 2015年09月26日 22時01分 (#2889490)

      滅ぶなんてとんでもない
      HTML5で新機能を大量追加しましたから使う気満々ですって

      sandboxあたりは主要ブラウザで実装終わったんじゃないかなー

      親コメント
    • by Anonymous Coward

      便利なんだけど他から見たら本当にマイナスしかないんだよね…

  • by Anonymous Coward on 2015年09月26日 22時37分 (#2889498)

    メモリ1GBのWindowsタブレットじゃきっついきっついで素直にedge使った方がいいのかなって気がして…
    タブレットモードへの対応も中途半端すぎますもんねぇ

    • by Anonymous Coward on 2015年09月26日 23時56分 (#2889519)

      なにか言い返してやろうと思ったが、低スペックなのにメモリだけ2G積んでる廉価スマホが想像以上に軽快なのもあって、言い返す言葉が浮かばなかった
      Googleまたは端末メーカーは根本的に自分たちの失敗を認めるところからスタートすべき

      親コメント
    • by Anonymous Coward

      Androidで1GBだとゴミクズカス呼ばわりされるのにやっぱりWindowsは優秀ですね。

      • by Anonymous Coward

        Android 5.0はメモリリークが酷くて2GBマスト、4GBベターみたいな状況でしたしね。
        Windowsは仮想メモリで追い出したりCPUパワーでメモリ圧縮出来るとはいえ、本気になったMSは資金力でごり押して実現しちゃう辺りは凄いですな。

        • by Anonymous Coward

          AndroidというかLinuxにも似たような機能はあるんですが、端末メーカーが有効にしていないだけです。

    • by Anonymous Coward

      新しいタブレットを買うのが最適解かと。2GBのタブレットなら20000からでもあります。
      メモリ1GBはストレス分の損失が大きすぎると思います。

      どうしても現状でがんばるのならオンメモリのタブ数の自制は必須かと。

  • by Anonymous Coward on 2015年09月26日 22時46分 (#2889501)

    すぐに1000を超えそう。
    週替わりでアップデートされるのはバグが多い?それとも良心的?

  • by Anonymous Coward on 2015年09月26日 22時56分 (#2889507)

    Firefoxそのものが元々メモリ食いなわけで、個人的にはそっちのほうを先になんとかしてほしいのですが。
    これについてはいっそのこと一から設計し直すとかしなきゃダメなのかな?

    • by Anonymous Coward on 2015年09月26日 23時29分 (#2889512)

      閉じたウインドウとかタブで使っていたメモリをきちんと回収したらいいと思うんですけどね

      親コメント
      • by Anonymous Coward on 2015年09月27日 12時59分 (#2889630)

        malloc/free ではすぐには回収されないからね
        独自のメモリプール使っても、肥大化は抑えられても解放は結局同じだし
        Chrome みたくプロセスごと Kill するのが解放するには一番いい
        トータルのメモリ使用量は一気に増えるだろうけど……

        # 昔のメモリ解放ソフトみたく、瞬間的に大量に確保して仮想メモリに追いやったらどうだろう
        # 仮想メモリ 0 にしてる私の環境では死ぬだろうけど

        親コメント
        • by Anonymous Coward

          malloc/freeはアプリ内のプールへは即座に返却される。
          一方システムにはいくら待っても返却される保証はない。
          独自のメモリ管理をしたうえでOSのメモリ管理API叩きましょう。

          # 昔のメモリ解放ソフトみたく、瞬間的に大量に確保して仮想メモリに追いやったらどうだろう
          Fxには以前ウィンドウ最小化でワーキングセットが縮小してそういう効果が得られる的なTipsがあったような。
          つか仮想メモリに追いやってもメモリ(仮想メモリ)は開放されないからバカ食いの問題自体は解決しないぞ?

          • by Anonymous Coward

            メモリの議論はニワカと自称中級者が印象だけでFUDを繰り返しているからもうどうしようもない。

          • by Anonymous Coward

            勉強になります

            > 独自のメモリ管理をしたうえでOSのメモリ管理API叩きましょう。

            メモリ管理 API 直叩きならすぐにシステムに返却されるんですね、知らなかったです
            ただ OS 毎に別コードになるのは面倒ですね

            > つか仮想メモリに追いやってもメモリ(仮想メモリ)は開放されないからバカ食いの問題自体は解決しないぞ?

            以前携わっていたアプリが、大量にメモリを喰った後大幅にメモリ使用量が減るという現象があったので、
            強制 GC のようにシステムへの回収をキックできるのではと思いました。
            ただ根拠はないです。

    • by Anonymous Coward

      unloadtabを使ってタブは残しつつ、メモリーだけ開放するとか。
      https://addons.mozilla.org/ja/firefox/addon/unloadtab/?src=api [mozilla.org]

      configuration-maniaを使って、1タブあたりのキャッシュ数を制限するとか
      ブラウザ/ブラウザのキャッシュ/キャッシュされるページ表示の数
      https://bitbucket.org/cat_in_136/configuration-mania/wiki/Home [bitbucket.org]

    • by Anonymous Coward

      bfcacheが気に入らないなら、network.http.use-cacheをfalseにすればいいだけですよ。普通のキャッシュはちゃんと利いていますから。

    • by Anonymous Coward

      「そっちのほう」をなんとかしたら遅いだの何だの別問題がわきおこるんでしょうね。
      あなたごのみの設計でゼロから直せればそれがベストなのでしょうけど。

    • by Anonymous Coward

      個人的には、開発中だというrust製エンジンの性能に興味がある。

    • by Anonymous Coward

      64ビット化を諦めなければ良かったのに…

typodupeerror

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...