Чому Firefox викликає «шипи» використання CPU кожні кілька секунд?


9

Коли я запускаю Firefox, у мене певний час не виникає проблем, але через пару днів починають виникати спайки процесора. Під час шипу Firefox замерзає, а потім зупиняється. Шипи трапляються кожні сім-десять секунд, а кожен стрибок триває дві-три секунди . Якщо я набираю, коли виникає шип, символи виводяться лише після шипу. Спочатку я вважав, що ця проблема пов’язана з Flash, тому я її відключив, але проблема все-таки виникає.

Також використання пам'яті Firefox збільшується до понад 600 МБ через кілька днів.

Список плагінів та розширень Firefox, якими я користуюся, доступний тут .


6
У Firefox завжди були витоки пам'яті, ця частина нормальна.
Джон Т

Симптом відстежується у помилці 490122 . Я, здається, більше не відчуваю цього у Firefox 4+ - на щастя.
RomanSt

1
І кожну нову версію вони обіцяють, що її виправили! google.com.au/…
Метью Лок

1
@MatthewLock Що з цим ? Здається, лише користувачі Reddit відчувають, що це звертається до кожної версії ...
Даніель Бек

Відповіді:


8

Я підозрюю, що це або колектор сміття, або колектор.

У about:configзміну javascript.options.mem.logна true. Тепер повідомлення про GC та CC повинні бути доступні в консолі Error ( Crtl+ Shift+ J). Якщо їх час та тривалість відповідають рівню заморожування, то це ваша проблема.

Коли у мене виникла ця проблема, я вирішив її, знявши мій профіль Firefox і створивши новий з нуля. Профілі Firefox мають тенденцію збирати багато сирого з часом.

Навіть це не є префектним рішенням. Якщо ви відкриєте багато вкладок у Firefox (100+) або безліч розширень і залишите Firefox працювати цілими днями, це неминуче сповільниться. Вам потрібно буде раз у раз перезавантажувати Firefox.

Якщо ви схожі на мене і маєте схильність збирати велику колекцію вкладок, з якими вам потрібно обійтись, щоб вирішити в якийсь момент інший трюк, який я використовую, - це встановити browser.sessionstore.max_concurrent_tabs0. Це не дозволить Firefox завантажувати всі вкладки вашого сеансу при запуску. Замість цього він завантажить їх, коли ви переходите на них. Я вважаю, що плюс час від часу перезапуск Firefox значно зменшує навантаження на велику кількість вкладок.


2
Існує плагін Firefox під назвою BarTab. Я припускаю , що він робить те ж саме про browser.sessionstore.max_concurrent_tabs
Boris_yo

1
Так, хоча я вважаю, що він не оновлюється для Firefox 4.
Містер Альфа


1
Схоже, що "max_concurrent_tabs" не знаходиться у Firefox 40 (2015-08).
Пітер Мортенсен

Я думаю, що поточний еквівалент max_concurrent_tabs є налаштуванням у налаштуваннях у розділі "Загальні", який називається "Не завантажуйте вкладки, поки не вибрано".
miyalys

9

В about:config, встановлено browser.sessionstore.intervalна велике число (воно повинно бути 10,000або 15,000, встановити його до приблизно 600,000).

В основному, це кількість мілісекунд між часом, коли Firefox оновлює ваш "збережений сеанс". Якщо у вас відкрито багато вкладок або довга історія переглядів (або, як це часто буває в мене обох), це може записувати смішні обсяги даних у sessionstore.jsфайл кожні 10 або 15 секунд, що може спричинити Flash відео на ненадовго заморозити або навіть зробити весь комп'ютер замороженим кожні кілька хвилин.

Якщо встановити це значення великій кількості, це недолік, що якщо Firefox виходить з ладу, ви втрачаєте останні кілька хвилин історії перегляду при спробі відновлення. На мою думку, це мала ціна, яку потрібно заплатити.

Ваші сплески процесора повинні ставати набагато рідше.


2
У мене встановлений плагін Session Manager. Він також економить сеанси, дозволяючи краще керувати та налаштовувати. Що робити, якщо Firefox і цей плагін обидва сеанси оновлення викликають високе використання процесора та збої? Чи є спосіб відключити функцію оновлення сеансу Firefox і зберегти Session Manager?
Boris_yo

1
У Firefox 40, схоже, зберегти його у файл "\ sessionstore-backups \ recovery.js" (примітка: у підпапці "sessionstore-backups") замість "sessionstore.js" (та попередній варіант у "\ sessionstore- резервні копії \ recovery.js ").
Пітер Мортенсен

1
Гаразд, це, здається, змінилося з Firefox 33 (2014-06), а не з Firefox 40.
Peter Mortensen

4

Він не виправить витоку пам'яті як такої. Але ввімкнення "Не завантажувати вкладки, поки вибрано" принаймні не завантажує вкладки, доки ви не натиснете на них після перезавантаження, що утримує пам'ять.

Я також виявив, що використання CCleaner для очищення Firefox "Сесія" трохи допомогла. Спершу створіть резервну копію всіх відкритих вкладок, оскільки вона видаляє інформацію про відновлення сеансу. Перед запуском CCleaner мій файл sessionstore.js становив близько 800 Кб, але згодом він зменшився до приблизно 6 КБ.

Більш детальну інформацію про сеанс-магазини можна знайти в розділі Розв’язано: Firefox зависає кожні 10 секунд, прокрутка - це стрибки .

Видалення Flashblock виправило мої високі проблеми з процесором у Firefox. Можливо, Flashblock та Adblock Plus чи якесь інше розширення не уживаються?

Життя занадто коротке, щоб возитися з Firefox. Я просто експортував свої закладки та видалив Firefox, потім видалив усі папки Firefox на машині, а потім знову встановив Firefox з нуля і відновив закладки. Тепер він працює швидше, ніж Google Chrome із абсолютно новою установкою.


2

Це дуже важко сказати. Це викликає це просто загальне використання, чи ви отримуєте доступ до певного сайту? (У нас виникла проблема, коли браузер з часом набув пам'ять через витік пам'яті в jQuery ).

Припустимо, що ви використовуєте ОС Microsoft, ви можете спробувати скористатися інструментом Microsoft Monitor Monitor . Він випиває пролиті навантаження повідомлень, але ви повинні мати можливість звузити їх до інтервалу, де сталося «заморожування», і, можливо, побачите, який процес блокує.


jQuery може мати витік пам'яті? Hrmmmmm
Jeff F.

1
Це може статися. Дивіться цей список квитків про помилки jQuery: bugs.jquery.com/search?q=leak&go=&ticket=on . Ми зіткнулися, тому що ми постійно потрапляли на одну сторінку (через запит AJAX, який запускався з інтервалом), що спричиняло досить великий витік.
Джеймс Вісман

1
Звучить більше як проблема браузера, а менше проблеми jQuary - це те, що я говорю, оскільки він не може працювати, але в браузері (ну для більшості випадків все одно) :) (якщо в той час, коли (1 == 1) {} виходить браузер Я звинувачую браузер: P)
Jeff F.

1
Хоча ви вірно стверджуєте, що браузер винен (деякі помилки на вищезазначеному посиланні були пов’язані з невдачею IE належним чином обробити циркулярні посилання), є кроки, які розробник може вжити у своєму JS-коді для покращення цих проблем. У C / C ++ вам потрібно очистити пам'ять, яку ви виділили вручну, оскільки для цього немає GC. Якщо ви цього не зробите, це несправність у вашому коді чи час виконання? Я заперечую, що не врахування обмежень вашого оточення може вважатися помилкою від вашого імені, і схоже, що саме так бачить і команда jQuery.
Джеймс Вісман

1
Що ж, це закінчилось дурним аргументом: P. JavaScript - не код, це сценарій; скрипт працює в іншій програмі. Погано написана програма працює самостійно, тому потрібна належна написання. Хороша програма, яка приймає скрипт, не дасть йому зламатись. Отже, якщо ви перевірите bugzilla, ви побачите, що вважаються помилками щодо погано написаного JavaScript, що спричиняє збій Firefox. Ця тема, однак, досить впевнена, тому я її залишу! (Перший коментар був скоріше жартом, оскільки браузер не протікає jQuery)
Jeff F.

0

Якщо ви цього ще не зробите, ви можете спробувати оновити до останнього Firefox. Вони наполегливо працювали, щоб зменшити витоки пам'яті.


Я завжди модернізувався і проблема залишилася. Я вважаю за краще жити з Firefox 3.6.17
Boris_yo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.