การลดพื้นที่หน่วยความจำของ Chrome เป็นหนึ่งในลำดับความสำคัญของทีมในปีนี้ เราเห็นการลดการใช้หน่วยความจำของ Gmail ลงถึง 45% แล้ว จากการปรับปรุงกระบวนการการเก็บขยะของ V8 แต่เราเพิ่งเริ่มต้นเท่านั้น การทดสอบครั้งถัดไปของเราเกี่ยวกับการใช้หน่วยความจำจะมุ่งเน้นไปที่ผู้ที่เปิดแท็บไว้หลายแท็บ (เช่น เราเอง) ซึ่งเรียกว่าการยกเลิก

การทิ้งแท็บมีให้บริการแบบเวอร์ชันทดลองใน Chrome 46 ขึ้นไป
ข้อมูลเบื้องต้น
โดยปกติแล้ว กระบวนการแสดงผลของเราจะกินพื้นที่ประมาณ 50 MB ต่อแท็บสำหรับทุกแท็บที่คุณเปิดอยู่ แม้ว่าผู้ใช้ส่วนใหญ่จะใช้เพียงแท็บเดียวในแต่ละครั้งก็ตาม หากคุณเปิดแท็บไว้ 10 แท็บ ระบบจะใช้หน่วยความจำอย่างน้อย 450 MB เพื่อเก็บสถานะแท็บที่ทำงานอยู่เบื้องหลัง ซึ่งอาจทำให้ใช้งานไม่สะดวกเมื่อเวลาผ่านไป

เป้าหมายอย่างหนึ่งของเราคือการลดหน่วยความจำที่ใช้ในแท็บที่คุณไม่ได้ใช้งานจริง เมื่อดูแท็บที่ใช้หน่วยความจำระบบในโปรแกรมจัดการงานของ Chrome ฉันพบว่าฉัน "ใช้" เว็บไซต์ด้านล่างเพียง 1-2 เว็บไซต์เท่านั้น ขณะที่แท็บอื่นๆ ในเบื้องหลังไม่ได้ใช้งาน

ด้วยเหตุนี้ การทิ้งแท็บจึงช่วยประหยัดหน่วยความจำได้
การทิ้งแท็บที่ไม่ได้ใช้
การทิ้งแท็บช่วยให้ Chrome ทิ้งแท็บที่คุณไม่ได้สนใจมากนักโดยอัตโนมัติเมื่อตรวจพบว่าหน่วยความจำของระบบเหลือน้อย "การทิ้ง" หมายถึงอะไร แท็บที่ทิ้งไปจะไม่หายไป เราปิดไปแล้ว แต่ก็ยังเห็นอยู่ในแถบแท็บของ Chrome หากกลับไปที่แท็บที่ทิ้งไปแล้ว แท็บดังกล่าวจะโหลดซ้ำเมื่อมีการคลิก ระบบจะบันทึกและกู้คืนเนื้อหาแบบฟอร์ม ตำแหน่งการเลื่อน และอื่นๆ ในลักษณะเดียวกับที่จะเกิดขึ้นระหว่างการไปยังหน้าถัดไป/หน้าก่อนหน้าด้วยแท็บ
นอกจากนี้ เรายังมีฟีเจอร์ใหม่อีกรายการที่อนุญาตให้แคชทรัพยากรแท็บทั้งหมดในเครื่อง ซึ่งทำงานร่วมกับการทิ้งแท็บได้ดีเมื่อคุณออฟไลน์ เมื่อเปิดใช้งานแท็บอีกครั้ง เราจะให้คุณเลือกโหลดเวอร์ชันที่แคชไว้ซึ่งโหลดผ่านเครือข่ายก่อนหน้านี้ซ้ำ หากต้องการเปิดใช้การโหลดหน้าเว็บซ้ำจากแคช ให้ลองใช้การทดสอบอื่นในส่วน chrome://flags/#show-saved-copy
คุณลองใช้การทิ้งแท็บได้แล้ววันนี้โดยเปิดใช้ผ่าน chrome://flags/#enable-tab-discarding
แล้วเปิด Chrome อีกครั้ง คุณสามารถควบคุมได้ว่าจะเปิดหรือปิดใช้ฟีเจอร์นี้ผ่านchrome://flags
หน้าเว็บ Chrome เดียวกัน


หน้าใหม่ชื่อ chrome://discards
ช่วยให้คุณดูรายการแท็บที่เปิดอยู่ได้ และเราจะพยายามแชร์ข้อมูลเชิงลึกเกี่ยวกับความน่าสนใจ (ที่เราคิดว่า) ของแท็บเหล่านั้นจากมากไปน้อย

หากต้องการทดสอบฟีเจอร์นี้ ให้ท่องเว็บตามปกติจนกว่าระบบจะอยู่ในโหมดหน่วยความจำต่ำ หรือเรียกใช้การทิ้งแท็บจาก about:discards โดยคลิก "ทิ้งแท็บเลย" ซึ่งจะเป็นการยกเลิกแท็บสุดท้ายในรายการ นอกจากนี้ คุณยังทิ้งแท็บใดแท็บหนึ่งออกจากรายการได้โดยคลิกปุ่ม "ทิ้ง" ของแท็บนั้น แท็บที่ทิ้งจะแสดงโดยมีคำนำหน้า [ทิ้ง]

การทิ้งแท็บจะทิ้งแท็บตามลำดับต่อไปนี้
- หน้าภายใน เช่น หน้าแท็บใหม่ บุ๊กมาร์ก ฯลฯ
- แท็บที่เลือกไว้นานแล้ว
- แท็บที่เลือกล่าสุด
- แอปที่ทำงานในหน้าต่าง
- แท็บที่ปักหมุด
- แท็บที่เลือก
เราได้เปิดใช้การทดสอบการทิ้งแท็บใน Chrome Canary สำหรับ Windows และ MacOS และจะเปิดใช้กับ Linux เร็วๆ นี้

แรงบันดาลใจ: สวัสดี คุณ Great Suspender
หากการทิ้งแท็บฟังดูคุ้นเคย นั่นเป็นเพราะคุณอาจเคยเห็นส่วนขยาย Chrome ที่มีประโยชน์ซึ่งใช้แนวคิดนี้ในเวอร์ชันที่เรียบง่ายกว่าเล็กน้อย เช่น The Great Suspender The Great Suspender มีเป้าหมายเพื่อลดการใช้หน่วยความจำและ GPU ของ Chrome โดยจะระงับแท็บหลังจากไม่ได้ใช้งานเป็นระยะเวลาที่กำหนด

คุณสามารถยกเลิกการระงับแท็บได้เมื่อต้องการโต้ตอบกับแท็บอีกครั้ง ซึ่งคล้ายกับการทิ้งแท็บ Great Suspender จะเก็บรักษาชื่อและ Favicon ของแท็บแต่ละรายการ โดยแสดงแท็บที่หยุดไว้ในสถานะสลัว ซึ่งช่วยให้คุณไปยังแท็บเหล่านั้นได้ง่ายๆ ได้ทุกเมื่อ

ระบบได้ระงับแท็บในเบื้องหลังที่ฉันไม่ได้ใช้งานอยู่เพื่อประหยัดหน่วยความจำ อย่างไรก็ตาม แท็บที่ฉันยังใช้งานอยู่ (GitHub และ YouTube) ยังทำงานได้ตามปกติ
เราแชทกับนักพัฒนาส่วนขยาย Great Suspender ไปเมื่อตอนพัฒนาการทิ้งแท็บ และนักพัฒนาก็ดีใจที่เห็นว่าเราแก้ปัญหานี้ตั้งแต่ต้นด้วยวิธีที่มีประสิทธิภาพกว่าส่วนขยาย เช่น การสูญเสียสถานะของผู้ใช้ที่ไม่ได้ใช้งาน
การปรับปรุงในอนาคต: โปรแกรมจัดรูปแบบแท็บ
ตัวจัดรูปแบบแท็บเป็นงานในอนาคตที่เราคิดว่าอาจนำไปสู่การปรับปรุงแนวทางปัจจุบันในการทิ้งแท็บได้อย่างมาก โดยจะนำเนื้อหาของแท็บ Chrome และจัดรูปแบบสถานะ *ปัจจุบัน* ของแท็บเป็นบล็อกไบนารี บล็อกไบนารีนี้สามารถแปลงเป็นแท็บในภายหลัง
โปรแกรมจัดรูปแบบข้อมูลจะจัดรูปแบบข้อมูลเกือบทั้งหมดที่ Chrome, Blink และ V8 ต้องการเพื่อเก็บแท็บอย่างถูกต้อง (ซึ่งส่วนขยาย Chrome ที่จัดการปัญหานี้มาอย่างยาวนานยังทําได้ยาก) การจัดรูปแบบข้อมูลจะรวมสิ่งที่ต้องสงสัยตามปกติ เช่น DOM (ซึ่งมี WebGL และ Canvas จำนวนมากรวมอยู่ด้วย), CSS และสถานะของ V8 JavaScript VM

หากคุณใช้ Android หรือ ChromeOS คุณอาจทราบดีว่า (คล้ายกับการทดสอบการทิ้งแท็บที่กล่าวถึงในโพสต์นี้) เราปิดแท็บที่ทำงานอยู่เบื้องหลังอย่างจริงจังเพื่อให้ใช้หน่วยความจำน้อย ปัญหาเกี่ยวกับวิธีที่เราจัดการเรื่องนี้คือแท็บของคุณจะสูญเสียสถานะ *ทั้งหมด*
เมื่อคุณแสดงความสนใจในแท็บอีกครั้ง เราจะต้องโหลดแท็บนั้นซ้ำและข้อมูลการโต้ตอบทั้งหมดของคุณกับแท็บจะหายไป ตัวจัดรูปแบบแท็บจะแก้ปัญหานี้ด้วยวิธีที่ช่วยให้คุณกลับไปทำสิ่งเดิมได้เกือบทั้งหมดโดยไม่ต้องกลับไปที่เครือข่าย เราหวังว่าจะได้แชร์ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ในภายหลัง
ลองใช้การทิ้งแท็บแล้วบอกเราว่าคุณคิดอย่างไร
เราอยากทราบว่าฟีเจอร์นี้มีประโยชน์กับคุณหรือไม่ และควรปรับปรุงอย่างไร ลองใช้ดู (โดยเฉพาะหากคุณเป็นพวกเปิดแท็บไว้เยอะๆ) แล้วบอกให้เราทราบในความคิดเห็น :) นอกจากนี้ เรายินดีอย่างยิ่งหากคุณสามารถส่งคำขอแจ้งข้อบกพร่องเกี่ยวกับข้อบกพร่องที่คุณพบใน crbug.com