2015年5月5日火曜日

Firefox 32bit で OOM (out of memory) によるクラッシュを MemChaser で監視。一足先に公式の 64bit ベータ版をインストール。

0. 目次

 

1. グラフィックボード関係のエラーでクラッシュ

avcuf32.dll, xul.dll に関連したエラーによりクラッシュすることはなくなった。

最後まで頑固に残ったエラーは、nvwgf2um.dll と nvd3dum.dll 。どちらも NVIDIA に関連したものらしい。

SnapCrab_2015-04-25_00-54-21_No-0000 SnapCrab_2015-04-30_11-09-21_No-0000

これに対して、ドライバをクリーンインストールしてもどうにもならずお手上げ。 (+_+)

 

2. MemChaser でメモリの使用状況を監視する

上記エラーでSnapCrab_2015-05-05_00-14-02_No-0000クラッシュする状況は、

  • インストールしているアドオンの数は 70 程度。
  • 常に開いているウィンドウは最低 5 枚。
  • 開いているタブの数は 100 以上。
  • ピン留めしているタブは 40 程度。

(クラッシュしまくる Firefox 36 を何とか実用的に利用するための設定 より)

この状態で Google マップを開き、Earth モードにして 3D 表示させると、すぐにクラッシュ。これに対して、

SnapCrab_2015-05-02_20-26-16_No-0000確かにその通りで、アドオン MemChaser を用いてクラッシュする寸前のメモリ使用量を調べてみたら、約 3200 MB 前後。

(メモリ不足になる前に自動的に再起動してくれるアドオン、Prevent Out Of Virtual Memory Crashes では、残されたメモリも表示され認識しやすい。)

Firefox はメモリ使用量が 3.25GB を超えるとクラッシュするらしい。

OSPFv3がFireFox is using 3GB of RAM and becomes very slow and and it slows down the computer immensely. What's the deal?について記入したコメント によると、

Those black screens are Firefox purging memory. Firefox cannot exceed 3.25GB of memory without crashing so it goes into a self-harming strategy to keep running.

 

3. 32bit アプリケーションにおけるメモリの限界

これは 32bit アプリケーションの宿命。

64bitOSを使用しても使えるメモリは3GBまで?【32bitソフト制限】 | ハルパス によると、

Windowsの64bitOSを使用していても、「32bitのソフトが使用できるメモリ領域は3GBまで」って知っていましたか?

64bit Windowsを前提とした32bitアプリケーション延命法 ~ LAAオプションで32bitアプリケーションのメモリ不足問題を解消 | OPTPiX Labs Blog によると、

Windowsの場合、PCに4GB以上のメモリを搭載していても、通常、1個の32bitアプリケーションで利用可能なメモリ容量は約2GBです。

実際に簡単なプログラムを作って調べてみると、確保できるヒープメモリの総容量は約1.9GBでした

アプリケーションによっては、独自に仮想記憶のような処理を行って、32bitアプリケーションで2GBを超える大量のデータを扱えるようにしているものもありますが、そのような処理を全く想定せずに開発されたアプリケーションでは、後から独自の仮想記憶のような処理を追加するのは難しいものです。

例えば Photoshop は、64 ビット版 Windows における利点と制限(Photoshop CS4/Photoshop CS4 Extended) によると、

Photoshop CS4 のバージョン

Windows のバージョン

Photoshop が使用可能な最大メモリ容量

32 ビットバージョン

32 ビット版

1.7 GB

32 ビットバージョン

64 ビット版

3.2 GB

64 ビットバージョン

64 ビット版

コンピュータに搭載されているメモリすべて

 

Firefox のクラッシュレポート

自分のFirefox クラッシュレポート (about:crashes) を見ると、大半に

OOM

out of memory の文字が並んでいる。(@_@;

試しに、Cyberfox において上記環境でメモリ使用量を確認したら、4400 MB ほどになった。これでは Firefox がクラッシュするのは当たり前。(+_+

特に驚いたのは、Tab Data を用いて、どのタブがメモリを多く利用しているか調べてみたら、Google ドキュメントで作成していた文書が 500MB超え。(@_@;

 

4. Cyberfox と公式の 64bit 版 Firefox

a. Cyberfox

SnapCrab_2015-05-05_14-00-27_No-0000よって、自分のような環境では、32bit 版の Firefox は使えない。代わりに Cyberfox を利用せざるを得ない。

もしくは、以下の方法でなるべくメモリを消費しないようにする。

そして、Cyberfox を使うなら、必要に応じて見ているページを別ブラウザで開けるようにしておく。

 

b. Beta channel

SnapCrab_2015-05-05_14-01-50_No-0000ところで、公式の 64bit 版 Firefxo は次期バージョンから公開されるらしい。

Firefox 38でWindows向け64bit版はフェーズ1が完了 軽量インストーラへの統合が今後の課題 - Mozilla Flux によると、

Firefox 38では、「各国語版のFirefoxをダウンロード」のページにWindows向け64bit版のスタンドアローン型インストーラ(フルインストーラ)が公開されることになりそうだ(Firefox/Channels/Meetings/2015-03-31 - MozillaWiki)。

公開はもうすぐ。Mozilla Firefoxのバージョンの変遷 – Wikipedia によると、

38.0
ESR 38.0
リリース前(2015年5月12日予定[162] 正式版 リリース

リリースまでもうすぐなので、ベータ版をインストールしても問題ないかな。

SnapCrab_2015-05-05_00-34-50_No-0000

公式ベータ版の方が Cyberfox より UI のレスポンスが良い気がする。

 

c. Developer Edition

Developer Edition (aurora) は、現在のバージョン 39.0a2 で 64bit 版を利用できる。

「Firefox Developer Edition」に64bit版Windows向けのビルドが登場 - 窓の杜

Mozillaは2月27日、開発者向けにカスタマイズされた「Firefox」のテスト版「Firefox Developer Edition」の最新版となるv38.0a2を公開した。本バージョンでは、64bit版Windows向けのビルドが追加されている。

「Firefox Developer Edition」はアルファ版に相当する「Firefox Aurora」を置き換えるかたちで、昨年11月から提供されている。

SnapCrab_2015-05-05_01-01-32_No-0000

 

d. Relase channel

正式版がリリースされたら、

より、ダウンロードして、ベータ版から戻すことにしよう。

SnapCrab_2015-05-05_01-12-03_No-0000

 

5. Firefox の channel まとめ

channel
  1. Release channel
  2. Beta channel
  3. Developer Edition
version