Firefox neden birkaç saniyede bir yüksek CPU kullanımı “artışlarına” neden oluyor?


9

Firefox'u başlattığımda, bir süre sorunum yok, ancak birkaç gün sonra CPU ani artışları oluşmaya başlıyor. Ani artış sırasında Firefox donar ve sonra durur. Sivri uçlar yedi ila on saniyede bir meydana gelir ve her diken iki ila üç saniye sürer . Ben bir ani artış olduğunda yazıyorum, karakterler sadece ani sonra çıktı. Başlangıçta bu sorunun Flash yüzünden olduğunu düşündüm, bu yüzden devre dışı bıraktım, ancak sorun hala oluşuyor.

Ayrıca, Firefox'un bellek kullanımı birkaç gün sonra 600 MB'ın üzerine çıkar.

Kullandığım Firefox eklentilerinin ve uzantılarının listesine buradan ulaşabilirsiniz .


6
Firefox'ta her zaman bellek sızıntısı oldu, bu bölüm normal.
John T

Belirti, hata 490122'de izlenir . Bunları artık Firefox 4+ 'da deneyimlemiyorum - çok şükür.
RomanSt

1
Ve vaat ettikleri her yeni sürüm bunu düzelttiler! google.com.au/…
Matthew Lock

1
Hakkında ne @MatthewLock bu ? Görünen o ki, Reddit üzerindeki kullanıcılar her versiyona hitap ediyor gibi görünüyor ...
Daniel Beck

Yanıtlar:


8

Bunun Çöp Toplayıcı veya Döngü Toplayıcı olduğundan şüpheleniyorum.

Gelen about:configdeğişim javascript.options.mem.logiçin true. GC ve CC ile ilgili bildirimler Hata konsolunda mevcut olmalıdır ( Crtl+ Shift+ J) Zamanlamaları ve süreleri donma ile eşleşiyorsa, bu sizin probleminizdir.

Bu sorunu yaşadığımda Firefox profilimi havaya uçurarak ve sıfırdan yeni bir profil oluşturarak düzelttim. Firefox profillerinin zamanla çok fazla pislik toplama eğilimi vardır.

Bu bile mükemmel bir çözüm değil. Firefox'ta (100+) veya çok sayıda uzantıda çok sayıda sekme açar ve Firefox'u günlerce çalışır durumda bırakırsanız kaçınılmaz olarak yavaşlar. Firefox'u arada bir yeniden başlatmanız gerekecek.

Benim gibi iseniz ve büyük bir sekme koleksiyonu toplama eğilimi varsa, bir noktada kullandığım başka bir numarayı browser.sessionstore.max_concurrent_tabs0'a ayarlamaktır . Bu, Firefox'un başlangıçta oturumunuzun tüm sekmelerini yüklemesini durduracaktır. Bunun yerine, onlara geçtiğinizde onları yükler. Bunu buluyorum, ayrıca Firefox'un ara sıra yeniden başlatılması, çok fazla sekmeye sahip olma yükünü büyük ölçüde azaltır.


2
BarTab adında Firefox eklentisi var. Ben bu konuda aynı şeyi yapar varsayalım browser.sessionstore.max_concurrent_tabs
Boris_yo

1
Evet, Firefox 4 için güncellenmediğine inanmama rağmen
Bay Alpha


1
"max_concurrent_tabs", Firefox 40'ta (2015-08) görünmüyor.
Peter Mortensen

Ben max_concurrent_tabs geçerli eşdeğeri "Genel" altında "seçilene kadar sekmeleri yükleme" altındaki tercihlerde ayar olduğunu düşünüyorum.
miyalys

9

İçinde about:config, browser.sessionstore.intervalbüyük bir sayı olarak ayarlayın (olması gerektiği gibi ; 10,000veya 15,000yaklaşık olarak ayarlayın 600,000).

Temel olarak, bu Firefox'un "kayıtlı oturumunuzu" güncellediği zamanlar arasındaki milisaniye sayısıdır. Açık birçok sekmeniz veya uzun bir göz atma geçmişiniz varsa (veya genellikle benimle olduğu gibi), bu sessionstore.jsher 10 veya 15 saniyede bir dosyaya gülünç miktarda veri yazıyor olabilir ve bu da Flash videoların kısa süreliğine dondurun, hatta tüm bilgisayarınızı birkaç dakikada bir dondurun.

Bu değerin büyük bir sayıya ayarlanması, Firefox'un çökmesi durumunda geri yüklemeye çalıştığınızda son birkaç dakikalık tarama geçmişinizi kaybetmeniz dezavantajına sahiptir. Bence bu küçük bir bedel.

CPU ani artışlarınız daha az sıklıkta olmalıdır .


2
Session Manager eklentisi yüklü. Ayrıca daha iyi yönetim ve özelleştirme sağlayan oturumları da kaydeder. Firefox ve bu eklenti hem yüksek CPU kullanımına ve çökmelere neden olan oturumları güncellerse ne olur? Firefox'un oturum güncelleme işlevini devre dışı bırakmanın ve Oturum Yöneticisi'ni korumanın bir yolu var mı?
Boris_yo

1
Firefox 40'ta, "sessionstore.js" (ve "\ sessionstore- yedekleri \ recovery.js ").
Peter Mortensen

1
Tamam, bu Firefox 40 ile değil, Firefox 33 (2014-06) ile değişmiş gibi görünüyor .
Peter Mortensen

4

Bellek sızıntılarını kendiliğinden düzeltmez. Ancak "Seçilinceye kadar sekmeleri yükleme" seçeneğini etkinleştirmek, yeniden başlattıktan sonra sekmeleri tıklayana kadar sekmeleri yüklemez;

Ben de Firefox temizlemek için CCleaner kullanarak buldum "Oturum" biraz yardımcı oldu. Oturum kurtarma bilgilerini kaldırdığı için önce tüm açık sekmelerinizi yedekleyin. CCleaner'ı çalıştırmadan önce benim sessionstore.js dosyam yaklaşık 800 KB'dı, ancak daha sonra yaklaşık 6 KB'ye düştü.

Sessionstore hakkında daha fazla bilgiyi Çözüldü: Firefox 10 saniyede bir donduruyor, kaydırma gergin .

Flashblock'u kaldırmak Firefox ile ilgili yüksek CPU sorunlarımı düzeltti. Belki Flashblock ve Adblock Plus veya başka bir uzantı anlaşılamaz mı?

Hayat, Firefox ile uğraşmak için çok kısa. Yer işaretlerimi dışa aktardım ve Firefox'u kaldırdım, ardından makinedeki tüm Firefox klasörlerini sildim ve ardından Firefox'u sıfırdan yeniden yükledim ve yer işaretlerini geri yükledim. Artık tamamen yeni bir yükleme ile Google Chrome'dan daha hızlı çalışıyor.


2

Bunu söylemek çok zor. Buna neden olan genel kullanım mı yoksa belirli bir siteye mi erişiyorsunuz? (Kısa bir tarayıcı nedeniyle bir bellek sızıntısı zamanla bellek kazanmış bir sorun vardı jQuery ).

Bir Microsoft işletim sistemi kullandığınızı varsayarsak, Microsoft'un İşlem İzleyicisi aracını kullanmayı deneyebilirsiniz . İleti yığınlarını tükürür, ancak bunları 'donma' gerçekleştiği aralığa daraltabilmeniz ve belki de hangi işlemin engelleme yaptığını görmeniz gerekir.


jQuery bellek sızıntısı olabilir mi? Hrmmmmm
Jeff F.

1
Olabilir. Bu jQuery hata biletleri listesine bakın: bugs.jquery.com/search?q=leak&go=&ticket=on . Karşılaştığımız için, oldukça büyük bir sızıntıya neden olan tek bir sayfaya (belirli aralıklarla tetiklenen bir AJAX isteği yoluyla) çarptığımız için karşılaştık.
James Wiseman

1
Bir tarayıcı sorunu gibi görünüyor ve bir jQuary sorunundan daha azı, çalışamayacağı için bir tarayıcıda (her durumda iyi durumda) :) (eğer (1 == 1) {} tarayıcı Tarayıcıyı suçluyorum: P)
Jeff F.

1
Tarayıcının hatalı olduğunu iddia etmekte haklı olsanız da (yukarıdaki bağlantıdaki bazı hatalar IE'nin dairesel referansları düzgün işlememe hatasıyla ilgiliydi), bir geliştiricinin bu sorunları düzeltmek için JS kodunda atabileceği adımlar vardır. C / C ++ 'da elle ayırdığınız belleği temizlemeniz gerekir, çünkü bunu yapabileceğiniz bir GC yoktur. Bunu yapmazsanız, kodunuzda veya çalışma süresinde bir hata mı var? Ortamınızın sınırlamalarını hesaba katmamanın sizin adınıza bir hata olarak değerlendirilebileceğini ve jQuery ekibinin de böyle göründüğünü iddia ediyorum.
James Wiseman

1
Bu aptalca bir argümanla sonuçlandı: P. JavaScript kod değil, koddur; script başka bir programda çalışır. Kötü yazılmış bir program kendi başına çalışır, bu nedenle düzgün yazma gerektirir. Komut dosyasını kabul eden iyi bir program, kendi kendini kırmasını önleyecektir. Bu nedenle, bugzilla'yı kontrol ederseniz, Firefox'un çökmesine neden olan kötü yazılmış JavaScript ile ilgili hatalar olarak kabul edilenleri göreceksiniz. Bu konu oldukça fikirlidir, bu yüzden onu bırakacağım! (Tarayıcı jQuery'ye sızmadığından ilk yorum daha çok şakaydı)
Jeff F.

0

Henüz yapmadıysanız, en son Firefox sürümüne geçmeyi deneyebilirsiniz. Bu bellek sızıntılarını azaltmak için çok çalıştılar.


Ben her zaman yükseltilmiş ve sorun kaldı. Firefox 3.6.17
Boris_yo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.