web-dev-qa-db-ja.com

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

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

また、Firefoxのメモリ使用量は数日後に600MBを超えます。

私が使用しているFirefoxプラグインと拡張機能のリストが利用可能ですここ

9
Boris_yo

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

about:configjavascript.options.mem.logtrueに変更します。これで、GCとCCに関する通知がエラーコンソールで利用できるようになります(Crtl+Shift+J)タイミングと期間がフリーズと一致する場合、これはあなたの問題です。

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

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

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

8
Mr Alpha

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

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

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

CPUスパイクは、多く頻度が少なくなるはずです。

9
Mike

メモリリーク自体は修正されません。ただし、[選択するまでタブを読み込まない]を有効にすると、再起動後にタブをクリックするまでタブが読み込まれなくなり、メモリが大幅に削減されます。

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

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

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

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

4
Matthew Lock

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

Microsoft OSを使用していると仮定すると、 Microsoftのプロセスモニター ツールを使用してみることができます。大量のメッセージを吐き出しますが、「フリーズ」が発生した間隔にメッセージを絞り込むことができ、どのプロセスがブロッキングを行っているかを確認できるはずです。

2
James Wiseman

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

0
CarlF