การลดพื้นที่หน่วยความจำของ 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 และ Mac OS แล้ว โดยจะเปิดให้บริการ Linux ในเร็วๆ นี้

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

คุณสามารถยกเลิกการระงับแท็บได้เมื่อต้องโต้ตอบกับแท็บอีกครั้ง เช่นเดียวกับการยกเลิกแท็บ Great Sticker จะรักษาชื่อและไอคอน Fav ของแต่ละแท็บ โดยแสดงแท็บที่ถูกระงับในสถานะสีสลัว ทำให้กลับมาที่แท็บเหล่านั้นได้ทุกเมื่อ

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

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