ทำไม Firefox ทำให้เกิดการใช้งาน CPU สูง“ แหลม” ทุกสองสามวินาที?


9

เมื่อฉันเริ่ม Firefox ฉันไม่มีปัญหาซักพัก แต่หลังจากผ่านไปสองสามวัน CPU ก็เริ่มเกิดขึ้น ในระหว่างที่มีการขัดขวาง Firefox จะหยุดและหยุดลง Spikes เกิดขึ้นทุกเจ็ดถึงสิบวินาทีและแต่ละเข็มเป็นเวลา2-3 วินาที หากฉันกำลังพิมพ์เมื่อสไปค์เกิดขึ้นอักขระจะแสดงผลหลังจากสไปค์เท่านั้น ตอนแรกฉันคิดว่าปัญหานี้เป็นเพราะของ Flash ดังนั้นฉันจึงปิดการใช้งาน แต่ปัญหายังคงเกิดขึ้น

นอกจากนี้การใช้หน่วยความจำของ Firefox เพิ่มขึ้นเป็นกว่า 600 MB หลังจากผ่านไปหลายวัน

รายการปลั๊กอิน Firefox และส่วนขยายของผมใช้ที่มีอยู่ที่นี่


6
Firefox มีหน่วยความจำรั่วเสมอส่วนนั้นเป็นเรื่องปกติ
John T

อาการที่ถูกติดตามในข้อผิดพลาด 490122 ฉันไม่ได้สัมผัสกับสิ่งเหล่านี้ใน Firefox 4+ อีกต่อไป - ขอบคุณ
RomanSt

1
และทุกเวอร์ชั่นใหม่พวกเขาสัญญาว่าพวกเขาจะซ่อมมันแล้ว! google.com.au/…
Matthew Lock

1
@ MatthewLock แล้วเรื่องนี้ล่ะ? ดูเหมือนว่าผู้ใช้ Reddit เท่านั้นที่รู้สึกว่านี่จะได้รับการแก้ไขทุก ๆ ครั้ง ...
Daniel Beck

คำตอบ:


8

ฉันสงสัยว่ามันเป็น Garbage Collector หรือ Cycle Collector

ใน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
มีปลั๊กอิน Firefox ที่เรียกว่า BarTab ผมถือว่ามันไม่เกี่ยวกับสิ่งเดียวกันbrowser.sessionstore.max_concurrent_tabs
Boris_yo

1
ใช่แม้ว่าฉันเชื่อว่ามันไม่ได้รับการอัปเดตสำหรับ Firefox 4
Mr Alpha

1
มีเป็นรายการ Bugzilla บน Firefox GC / CC กลายเป็นช้าผิดปกติ
RomanSt

1
"max_concurrent_tabs" ไม่ปรากฏใน Firefox 40 (2015-08)
Peter Mortensen

ฉันคิดว่าเทียบเท่าปัจจุบันของ max_concurrent_tabs คือการตั้งค่าในการตั้งค่าภายใต้ "ทั่วไป" เรียกว่า "อย่าโหลดแท็บจนกว่าจะเลือก"
miyalys

9

ในabout:configตั้งค่าbrowser.sessionstore.intervalเป็นจำนวนมาก (ควรเป็น10,000หรือ15,000; ตั้งค่าเป็นประมาณ600,000)

โดยทั่วไปนี่คือจำนวนมิลลิวินาทีระหว่างเวลาที่ Firefox อัปเดต "เซสชันที่บันทึกไว้" ของคุณ หากคุณมีหลายแท็บเปิดอยู่หรือมีประวัติการสืบค้นที่ยาวนาน (หรืออย่างที่ฉันมักจะเป็นทั้งสองกรณี) สิ่งนี้สามารถเขียนข้อมูลไร้สาระไปยังsessionstore.jsไฟล์ทุก 10 หรือ 15 วินาทีซึ่งอาจทำให้วิดีโอ Flash หยุดชั่วครู่หรือทำให้คอมพิวเตอร์ทั้งเครื่องของคุณหยุดนิ่งทุกสองสามนาที

การตั้งค่านี้เป็นจำนวนมากมีข้อเสียว่าหาก Firefox ขัดข้องคุณจะสูญเสียประวัติการเรียกดูสองสามนาทีสุดท้ายเมื่อคุณพยายามกู้คืน นั่นเป็นราคาขนาดเล็กที่ต้องจ่ายในความคิดของฉัน

เดือย CPU ของคุณควรมีความถี่น้อยกว่ามาก


2
ฉันติดตั้งปลั๊กอิน Session Manager แล้ว นอกจากนี้ยังบันทึกเซสชันที่ช่วยให้การจัดการและปรับแต่งดีขึ้น จะเกิดอะไรขึ้นถ้า Firefox และปลั๊กอินนี้ทั้งเซสชันการอัพเดตทำให้เกิดการใช้งาน CPU สูงและล่ม มีวิธีการปิดการใช้งานฟังก์ชั่นการอัพเดทเซสชันของ 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

มันจะไม่แก้ไขการรั่วไหลของหน่วยความจำต่อ se แต่การเปิดใช้งาน "อย่าโหลดแท็บจนกว่าจะเลือก" อย่างน้อยที่สุดจะไม่โหลดแท็บจนกว่าคุณจะคลิกที่แท็บเหล่านั้นหลังจากรีสตาร์ท

ฉันยังพบว่าใช้CCleanerเพื่อล้าง Firefox "เซสชัน" ช่วยหน่อย สำรองแท็บที่เปิดอยู่ทั้งหมดก่อนที่จะลบข้อมูลการกู้คืนเซสชัน ก่อนเรียกใช้ CCleaner ไฟล์ sessionstore.js ของฉันมีขนาดประมาณ 800 KB แต่หลังจากนั้นจะลดลงเหลือประมาณ 6 KB

ข้อมูลเพิ่มเติมเกี่ยวกับ sessionstore สามารถพบได้ในการแก้ไข: Firefox Freezes ทุกๆ 10 วินาที, เลื่อนเป็นน่ากลัว

การถอนการติดตั้ง Flashblock แก้ไขปัญหา CPU สูงของฉันกับ Firefox บางที Flashblock และ Adblock Plus หรือส่วนขยายอื่น ๆ ไม่สอดคล้องกัน?

ชีวิตสั้นเกินไปที่จะยุ่งกับ Firefox ฉันเพิ่งส่งออกบุ๊กมาร์กของฉันและถอนการติดตั้ง Firefox จากนั้นลบโฟลเดอร์ Firefox ทั้งหมดในเครื่องจากนั้นทำการติดตั้ง Firefox ใหม่ตั้งแต่เริ่มต้นและเรียกคืนบุ๊กมาร์ก ตอนนี้มันทำงานได้เร็วกว่า Google Chrome ด้วยการติดตั้งใหม่ทั้งหมด


2

เป็นการยากที่จะบอก มันเป็นเพียงการใช้งานทั่วไปที่ทำให้เกิดหรือคุณเข้าถึงเว็บไซต์ที่เฉพาะเจาะจงหรือไม่ (เราพบปัญหาที่เบราว์เซอร์ได้รับหน่วยความจำเมื่อเวลาผ่านไปเนื่องจากหน่วยความจำรั่วในjQuery )

สมมติว่าคุณใช้ Microsoft OS คุณสามารถลองใช้เครื่องมือProcess Process ของ Microsoft มันกระจายข้อความจำนวนมากออกไป แต่คุณควรที่จะ จำกัด ให้แคบลงจนถึงช่วงเวลาที่ 'หยุด' เกิดขึ้นและอาจเห็นว่ากระบวนการใดกำลังทำการบล็อก


jQuery อาจมีหน่วยความจำรั่วหรือไม่? Hrmmmmm
Jeff F.

1
มันสามารถเกิดขึ้นได้ ดูรายชื่อของตั๋วข้อผิดพลาด jQuery นี้: bugs.jquery.com/search?q=leak&go=&ticket=on เราพบเพราะเรากดปุ่มหน้าเดียวตลอดเวลา (ผ่านคำขอ AJAX ที่ถูกเรียกในช่วงเวลาหนึ่ง) ซึ่งเร่งการรั่วไหลขนาดใหญ่พอสมควร
James Wiseman

1
ฟังดูคล้ายกับปัญหาเบราว์เซอร์และปัญหา jQuary น้อยกว่าคือสิ่งที่ฉันพูดเพราะมันไม่สามารถทำงานได้ แต่ในเบราว์เซอร์ (ดีสำหรับกรณีส่วนใหญ่อย่างไรก็ตาม) :) (ถ้าในขณะที่ (1 == 1) {} ล้มเหลว เบราว์เซอร์ฉันตำหนิเบราว์เซอร์: P)
Jeff F.

1
ในขณะที่คุณถูกต้องในการยืนยันว่าเบราว์เซอร์มีข้อผิดพลาด (ข้อบกพร่องบางอย่างในลิงค์ด้านบนมีความเกี่ยวข้องกับความล้มเหลวของ IE ในการจัดการการอ้างอิงแบบวงกลมอย่างถูกต้อง) มีขั้นตอนที่นักพัฒนาสามารถใช้ในรหัส JS ของพวกเขา ใน C / C ++ คุณต้องล้างหน่วยความจำด้วยตนเองเนื่องจากคุณไม่มี GC ให้ทำเช่นนี้ หากคุณไม่ได้เป็นความผิดพลาดในรหัสของคุณหรือรันไทม์? ฉันจะโต้แย้งว่าการไม่คำนึงถึงข้อ จำกัด ของสภาพแวดล้อมของคุณอาจถือได้ว่าเป็นข้อบกพร่องในนามของคุณและดูเหมือนว่านั่นเป็นสิ่งที่ทีม jQuery มองเห็น
James Wiseman

1
เรื่องนี้จบลงด้วยการโต้เถียงโง่ ๆ : พี JavaScript ไม่ใช่รหัส แต่เป็นสคริปต์ สคริปต์ทำงานภายในโปรแกรมอื่น โปรแกรมที่เขียนไม่ดีทำงานด้วยตัวเองมันต้องมีการเขียนที่เหมาะสมเพราะสิ่งนี้ โปรแกรมที่ดีที่ยอมรับสคริปต์จะป้องกันไม่ให้ตัวเองแตก ดังนั้นทำไมถ้าคุณตรวจสอบ bugzilla คุณจะเห็นสิ่งที่ถือว่าเป็นข้อบกพร่องที่เกี่ยวข้องกับ JavaScript ที่เขียนไม่ดีทำให้ Firefox ผิดพลาด หัวข้อนี้มีความเห็นค่อนข้างสวยดังนั้นฉันจะทิ้งมันไว้! (ความคิดเห็นแรกได้มากขึ้นจากเรื่องตลกตั้งแต่การรั่วไหลของเบราว์เซอร์ไม่ jQuery)
เจฟฟ์เอฟ

0

หากคุณยังไม่ได้ดำเนินการคุณอาจลองอัปเกรดเป็น Firefox รุ่นล่าสุด พวกเขาทำงานอย่างหนักเพื่อลดการรั่วไหลของหน่วยความจำเหล่านั้น


ฉันอัปเกรดเสมอและปัญหาอยู่ ฉันชอบอยู่กับ Firefox 3.6.17
Boris_yo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.