Firefoxが数秒ごとにCPU使用率の高い「スパイク」を引き起こすのはなぜですか?


9

Firefoxを起動するとしばらく問題はありませんが、数日後にCPUスパイクが発生し始めます。スパイク中に、Firefoxがフリーズして停止します。スパイクは7〜10秒ごとに発生し、各スパイクは2〜3秒続きます。スパイクが発生したときに入力すると、スパイクの後にのみ文字が出力されます。この問題はFlashが原因であると当初は思っていたため、無効にしましたが、まだ問題が発生しています。

また、Firefoxのメモリ使用量は数日後に600 MB以上に増加します。

私が使用しているFirefoxのプラグインと拡張機能のリストは、こちらから入手できます


6
Firefoxには常にメモリリークがありましたが、その部分は正常です。
John T

症状はバグ490122で追跡されます。Firefox 4以降では、これらを経験しなくなったようです-ありがたいことに。
RomanSt 2011

1
そして、彼らがそれを修正したと約束するすべての新しいバージョン!google.com.au/…–
マシューロック

1
@MatthewLock これはどうですか?Redditのユーザーだけが、これがすべてのバージョンに対処されていると感じているようです...
Daniel Beck

回答:


8

ガベージコレクターかサイクルコレクターのどちらかだと思います。

about:config変更javascript.options.mem.logしてtrue。これで、GCとCCに関する通知がエラーコンソール(Crtl+ Shift+ J)で利用可能になるはずです。それらのタイミングと継続時間の一致がフリーズしている場合、これが問題です。

この問題が発生したとき、Firefoxプロファイルを吹き飛ばし、新しいプロファイルを最初から作成して修正しました。Firefoxのプロファイルは、時間の経過とともに多くのクラッドを収集する傾向があります。

これでも完璧な解決策ではありません。Firefox(100以上)または多数の拡張機能で多数のタブを開き、Firefoxを何日も実行したままにすると、必然的に速度が低下します。たまにFirefoxを再起動する必要があります。

あなたが私のようなもので、大量のタブのコレクションを収集する傾向がある場合、ある時点で対処する必要がある別のトリックはbrowser.sessionstore.max_concurrent_tabs、0 に設定することです。これにより、Firefoxが起動時にセッションのすべてのタブをロードしなくなります。それらに切り替えると、代わりにロードされます。私はこれに加えて、Firefoxを時々再起動することで、非常に多くのタブを使用する負荷を大幅に軽減しています。


2
BarTabと呼ばれるFirefoxプラグインがあります。browser.sessionstore.max_concurrent_tabs
Boris_yo

1
はい、Firefox 4ではアップデートされていないと思いますが、
Mr Alpha


1
「max_concurrent_tabs」はFirefox 40(2015-08)にはないようです。
Peter Mortensen

現在のmax_concurrent_tabsに相当するものは、「全般」の「設定を選択するまでタブを読み込まない」という設定の設定です。
miyalys 2015

9

で、大きな数about:configに設定browser.sessionstore.intervalします(10,000またはである必要があり15,000ます。約に設定します600,000)。

基本的に、これはFirefoxが「保存されたセッション」を更新する時間間隔のミリ秒数です。多くのタブが開いている場合、または長い閲覧履歴がある場合(または、両方の場合によくあることですが、両方の場合)、sessionstore.js10秒または15秒ごとに途方もない量のデータがファイルに書き込まれ、Flashビデオが発生する可能性があります。短時間だけフリーズするか、コンピュータ全体を数分ごとにフリーズします。

この値を大きな値に設定すると、Firefoxがクラッシュした場合、復元しようとすると、最後の数分の閲覧履歴が失われるという欠点があります。それは私の意見では支払うべき小さな価格です。

CPUスパイクの頻度が大幅に減少するはずです。


2
Session Managerプラグインがインストールされています。また、セッションを保存して、より良い管理とカスタマイズを可能にします。Firefoxとこのプラグインの両方がセッションを更新してCPU使用率が高くなり、クラッシュした場合はどうなりますか?Firefoxのセッション更新機能を無効にしてセッションマネージャを維持する方法はありますか?
Boris_yo 2012年

1
Firefox 40では、「sessionstore.js」(および以前のバージョンの「\ sessionstore- backups \ recovery.js」)。
Peter Mortensen

1
OK、これはしているようだのFirefox 33で変更はないのFirefox 40、(2014から06)
ピーター・モーテンセン

4

それ自体はメモリリークを修正しません。ただし、「選択するまでタブを読み込まない」を有効にすると、再起動後にタブをクリックするまでタブは読み込まれません。これにより、メモリが節約されます。

また、CCleanerを使用してFirefoxの「セッション」をクリーンアップすることも少し役立ちました。セッション回復情報が削除されるため、開いているすべてのタブを最初にバックアップします。CCleanerを実行する前は、私のsessionstore.jsファイルは約800 KBでしたが、その後は約6 KBになりました。

セッションストアの詳細については、「解決済み:Firefoxが10秒ごとにフリーズする、スクロールはびくびくする」を参照してください

Flashblockをアンインストールすると、FirefoxのCPU使用率が高くなる問題が修正されました。おそらく、FlashblockとAdblock Plusまたは他の拡張機能がうまく機能しないのでしょうか。

人生は短すぎてFirefoxをいじり回すことはできません。ブックマークをエクスポートしてFirefoxをアンインストールし、マシン上のすべてのFirefoxフォルダーを削除してから、Firefoxを最初から再インストールし、ブックマークを復元しました。今では、まったく新しいインストールでGoogle Chromeよりも高速に実行されます。


2

言うのはとても難しいです。それを引き起こすのは単なる一般的な使用ですか、それとも特定のサイトにアクセスしていますか?(jQueryのメモリリークが原因で、ブラウザが時間の経過とともにメモリを獲得するという問題がありました)。

Microsoft OSを使用している場合、MicrosoftのProcess Monitorツールを使用してみてください。大量のメッセージを吐き出しますが、それらを「フリーズ」が発生した間隔に絞り込み、おそらくどのプロセスがブロッキングを実行しているかを確認できます。


jQueryでメモリリークが発生する可能性はありますか?Hrmmmmm
ジェフF.

1
有りうる。jQueryバグチケットのこのリストを参照してください:bugs.jquery.com/search?q=leak&go=&ticket=on。かなり大きなリークを引き起こした(間隔を置いてトリガーされたAJAXリクエストを介して)常に単一のページにアクセスしていたため、この問題が発生しました。
James Wiseman、

1
ブラウザーでは実行できないため、ブラウザーの問題のように聞こえ、jQuaryの問題は少ないようですが、ほとんどの場合はとにかく):)(if while(1 == 1){}がクラッシュすると、ブラウザ私はブラウザのせいです:P)
ジェフF.

1
ブラウザーに障害があると断言するのは正しいですが(上記のリンクのバグの一部は、IEが循環参照を適切に処理できなかったことに関連しています)、これらの問題を改善するために開発者がJSコードで実行できる手順があります。C / C ++では、GCがないため、手動で割り当てたメモリをクリーンアップする必要があります。もしそうでなければ、これはあなたのコード、またはランタイムの障害ですか?私はあなたの環境の制限を考慮しないことはあなたに代わってバグと見なすことができると主張します、そしてそれはまさにjQueryチームもそれを見る方法であるように見えます。
James Wiseman、

1
まあこれは愚かな議論に終わった:P。JavaScriptはコードではなく、スクリプトです。スクリプトは別のプログラム内で実行されます。不十分に書かれたプログラムはそれ自体で実行されます。このため、適切な書き込みが必要です。スクリプトを受け入れる優れたプログラムは、スクリプトが壊れないようにします。したがって、bugzillaをチェックすると、Firefoxがクラッシュする原因となったJavaScriptの記述が不適切なことに関連するバグと見なされるのがわかるでしょう。しかし、このトピックはかなり意見が分かれているので、それはそのままにしておきます。(ブラウザがjQueryではなくリークするため、最初のコメントは冗談でした)
ジェフF.

0

まだ行っていない場合は、最新のFirefoxにアップグレードしてみてください。彼らはそれらのメモリリークを減らすために一生懸命働いてきました。


私は常にアップグレードし、問題は解決しませんでした。私はFirefox 3.6.17と一緒に暮らしたい
Boris_yo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.