Tại sao Firefox lại gây ra tình trạng sử dụng CPU cao đột biến cứ sau vài giây?


9

Khi tôi khởi động Firefox, tôi không gặp vấn đề gì trong một thời gian, nhưng sau một vài ngày, sự đột biến của CPU bắt đầu xảy ra. Trong thời gian tăng đột biến, Firefox đóng băng và sau đó dừng lại. Sự đột biến xảy ra cứ sau bảy đến mười giây và mỗi lần tăng vọt kéo dài từ hai đến ba giây . Nếu tôi đang gõ khi xảy ra đột biến, các ký tự chỉ xuất sau khi tăng đột biến. Ban đầu tôi nghĩ vấn đề này là do Flash, vì vậy tôi đã vô hiệu hóa nó, nhưng vấn đề vẫn xảy ra.

Ngoài ra, việc sử dụng bộ nhớ của Firefox tăng lên hơn 600 MB sau vài ngày.

Danh sách các plugin và tiện ích mở rộng Firefox tôi sử dụng có sẵn ở đây .


6
Firefox luôn bị rò rỉ bộ nhớ, phần đó là bình thường.
John T

Các triệu chứng được theo dõi trong lỗi 490122 . Tôi dường như không còn trải nghiệm những điều này trong Firefox 4+ nữa - rất may.
RomanSt

1
Và mỗi phiên bản mới, họ hứa rằng họ đã sửa nó! google.com / bít
Khóa Matthew

1
@MatthewLock Còn cái này thì sao? Dường như chỉ có người dùng trên Reddit cảm thấy như điều này được xử lý ở mọi phiên bản ...
Daniel Beck

Câu trả lời:


8

Tôi nghi ngờ đó là Trình thu gom rác hoặc Trình thu thập chu kỳ.

Trong about:configsự thay đổi javascript.options.mem.logđể true. Bây giờ các thông báo về GC và CC sẽ có sẵn trong bảng điều khiển Lỗi ( Crtl+ Shift+ J) Nếu thời gian và thời lượng của chúng khớp với việc đóng băng, thì đây là vấn đề của bạn.

Khi tôi gặp vấn đề này, tôi đã khắc phục bằng cách thổi bay hồ sơ Firefox của mình và tạo một cái mới từ đầu. Các cấu hình Firefox có xu hướng thu thập rất nhiều lỗi thời gian.

Thậm chí đây không phải là một giải pháp hoàn hảo. Nếu bạn mở nhiều tab trong Firefox (100+) hoặc nhiều tiện ích mở rộng và khiến Firefox chạy liên tục trong nhiều ngày thì chắc chắn nó sẽ chậm lại. Thỉnh thoảng bạn sẽ cần khởi động lại Firefox.

Nếu bạn giống tôi và có xu hướng thu thập một tập hợp lớn các tab bạn cần xử lý tại một số điểm, một mẹo khác tôi sử dụng là đặt browser.sessionstore.max_concurrent_tabsthành 0. Điều này sẽ ngăn Firefox tải tất cả các tab của phiên của bạn khi bắt đầu. Thay vào đó, nó sẽ tải chúng khi bạn chuyển sang chúng. Tôi thấy điều này, cộng với việc khởi động lại thỉnh thoảng của Firefox, giúp giảm đáng kể tải có nhiều tab.


2
Có plugin Firefox có tên là BarTab. Tôi giả sử nó cũng làm điều tương tự với browser.sessionstore.max_concien_tabs
Boris_yo

1
Có, mặc dù tôi tin rằng nó không được cập nhật cho Firefox 4.
Mr Alpha


1
"max_concien_tabs" dường như không có trong Firefox 40 (2015-08).
Peter Mortensen

Tôi nghĩ rằng tương đương hiện tại của max_concien_tabs là cài đặt trong tùy chọn trong "Chung" được gọi là "Không tải các tab cho đến khi được chọn".
miyalys

9

Trong about:config, đặt browser.sessionstore.intervalthành một số lớn (nên là 10,000hoặc 15,000; đặt thành khoảng 600,000).

Về cơ bản, đây là số mili giây giữa các lần Firefox cập nhật "phiên đã lưu" của bạn. Nếu bạn có nhiều tab mở hoặc lịch sử duyệt web dài (hoặc, như thường thấy với cả hai), điều này có thể ghi một lượng dữ liệu lố bịch vào sessionstore.jstệp cứ sau 10 hoặc 15 giây, có thể khiến video Flash bị đóng băng nhanh chóng hoặc thậm chí khiến toàn bộ máy tính của bạn bị đóng băng cứ sau vài phút.

Đặt giá trị này thành một số lớn có nhược điểm là nếu Firefox gặp sự cố, bạn sẽ mất lịch sử duyệt web trong vài phút cuối cùng khi bạn cố gắng khôi phục. Đó là một cái giá nhỏ phải trả theo ý kiến ​​của tôi.

Gai CPU của bạn sẽ trở nên nhiều ít thường xuyên hơn.


2
Tôi đã cài đặt plugin Trình quản lý phiên. Nó cũng lưu các phiên cho phép quản lý và tùy biến tốt hơn. Điều gì sẽ xảy ra nếu Firefox và plugin này đều cập nhật các phiên gây ra tình trạng sử dụng CPU cao và gặp sự cố? Có cách nào để vô hiệu hóa chức năng cập nhật phiên của Firefox và giữ Trình quản lý phiên không?
Boris_yo

1
Trong Firefox 40, nó dường như lưu nó trong tệp "\ sessionstore-backups \ recovery.js" (lưu ý: trong thư mục con "sessionstore-backups") thay vì "sessionstore.js" (và phiên bản trước trong "\ sessionstore- sao lưu \ recovery.js ").
Peter Mortensen

1
OK, điều này dường như đã thay đổi với Firefox 33 (2014-06), chứ không phải Firefox 40.
Peter Mortensen

4

Nó sẽ không sửa rò rỉ bộ nhớ mỗi se. Nhưng việc bật "Không tải các tab cho đến khi được chọn" ít nhất sẽ không tải các tab cho đến khi bạn nhấp vào chúng sau khi khởi động lại, điều này khiến bộ nhớ giảm xuống.

Tôi cũng thấy việc sử dụng CCleaner để dọn dẹp "Phiên" Firefox đã giúp một chút. Sao lưu tất cả các tab đang mở của bạn trước vì nó sẽ xóa thông tin khôi phục phiên. Trước khi chạy CCleaner, tệp sessionstore.js của tôi khoảng 800 KB, nhưng sau đó giảm xuống còn khoảng 6 KB.

Thông tin thêm về sessionstore có thể được tìm thấy trong Solved: Firefox đóng băng cứ sau 10 giây, cuộn là tăng vọt .

Gỡ cài đặt Flashblock đã khắc phục các sự cố CPU cao của tôi với Firefox. Có lẽ Flashblock và Adblock Plus hoặc một số tiện ích mở rộng khác không hợp nhau?

Cuộc sống quá ngắn để loay hoay với Firefox. Tôi vừa xuất dấu trang của mình và gỡ cài đặt Firefox, sau đó xóa tất cả các thư mục Firefox trên máy, sau đó cài đặt lại Firefox từ đầu và khôi phục lại dấu trang. Bây giờ, nó chạy nhanh hơn Google Chrome với cài đặt hoàn toàn mới.


2

Nó rất khó để nói Có phải chỉ sử dụng chung gây ra nó, hoặc bạn đang truy cập một trang web cụ thể? (Chúng tôi đã gặp sự cố khi trình duyệt tăng bộ nhớ theo thời gian do rò rỉ bộ nhớ trong jQuery ).

Giả sử bạn đang sử dụng Microsoft OS, bạn có thể thử sử dụng công cụ Trình giám sát quy trình của Microsoft . Nó tạo ra vô số tin nhắn, nhưng bạn sẽ có thể thu hẹp chúng trong khoảng thời gian xảy ra 'đóng băng' và có thể xem quá trình nào đang thực hiện việc chặn.


jQuery có thể bị rò rỉ bộ nhớ? Hrmmmmm
Jeff F.

1
Nó có thể xảy ra. Xem danh sách vé lỗi jQuery này: bug.jquery.com/search?q=leak&go=&ticket=on . Chúng tôi gặp phải vì chúng tôi liên tục nhấn vào một trang duy nhất (thông qua yêu cầu AJAX được kích hoạt trong một khoảng thời gian) dẫn đến rò rỉ khá lớn.
James Wiseman

1
Nghe có vẻ giống như sự cố trình duyệt và ít xảy ra sự cố jQ hơn là những gì tôi đang nói vì nó không thể chạy nhưng trong trình duyệt (dù sao đi nữa trong hầu hết các trường hợp) :) (nếu while (1 == 1) {} gặp sự cố trình duyệt Tôi đổ lỗi cho trình duyệt: P)
Jeff F.

1
Mặc dù bạn đã đúng khi khẳng định rằng trình duyệt có lỗi (một số lỗi trong liên kết trên có liên quan đến việc IE không xử lý đúng các tham chiếu vòng tròn), có một số bước mà nhà phát triển có thể thực hiện trong mã JS của họ để cải thiện các vấn đề này. Trong C / C ++, bạn phải dọn sạch bộ nhớ mà bạn đã phân bổ theo cách thủ công vì không có GC để bạn thực hiện việc này. Nếu bạn không phải là lỗi trong mã của bạn hoặc thời gian chạy? Tôi sẽ lập luận rằng việc không tính đến các hạn chế trong môi trường của bạn có thể được coi là một lỗi thay cho bạn và có vẻ như đó chính xác là cách nhóm jQuery cũng xem nó.
James Wiseman

1
Vâng, điều này đã kết thúc trong một cuộc tranh luận ngớ ngẩn: P. JavaScript không phải là mã, nó là tập lệnh; kịch bản chạy trong một chương trình khác. Một chương trình được viết kém chạy trên chính nó, nó đòi hỏi phải viết đúng vì điều này. Một chương trình tốt chấp nhận kịch bản sẽ ngăn nó tự phá vỡ. Do đó, tại sao nếu bạn kiểm tra bugzilla, bạn sẽ thấy những gì được coi là lỗi liên quan đến JavaScript được viết kém khiến Firefox bị sập. Mặc dù vậy, chủ đề này khá gây tranh cãi, vì vậy tôi sẽ để nó ở đó! (Nhận xét đầu tiên chỉ là một trò đùa vì trình duyệt rò rỉ không phải jQuery)
Jeff F.

0

Nếu bạn chưa làm như vậy, bạn có thể thử nâng cấp lên Firefox mới nhất. Họ đã làm việc chăm chỉ để giảm những rò rỉ bộ nhớ.


Tôi luôn luôn nâng cấp và vấn đề ở lại. Tôi thích sống với Firefox 3.6.17
Boris_yo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.