מחיקת כרטיסיות ב-Chrome – ניסוי שמירת זיכרון

אדי אוסמאני
אדי אוסמאני

צמצום טביעת הרגל הפחמנית של Chrome הוא אחד הנושאים שעומדים בראש סדר העדיפויות של הצוות השנה. הודות לשיפורים בתהליך איסוף האשפה של V8, כבר יש ירידה של עד 45% בשימוש בזיכרון של Gmail, אבל זו רק ההתחלה. אחד מהניסויים הבאים שלנו לגבי השימוש בזיכרון מיועד לאגרי כרטיסיות (כמוני). השיטה הזו נקראת Tab מחיקה.

לא כל הכרטיסיות הפתוחות הן כרטיסיות. אם אין מספיק זיכרון, Chrome יכול למחוק כרטיסיות לא מעניינות ברקע.

מחיקת כרטיסיות זמינה כניסוי ב-Chrome 46 ואילך.

רקע

תהליך הרינדור נמשך בדרך כלל כ-50MB לכל כרטיסייה, למרות שרוב האנשים משתמשים בכרטיסייה אחת בלבד בכל פעם. אם פתחתם 10 כרטיסיות, אתם משתמשים בזיכרון בנפח של 450MB לפחות כדי לשמור על מצב הכרטיסיות ברקע. הבעיה הזו עשויה להיות מסורבלת במשך הזמן.

נדרש זיכרון לכל כרטיסייה

אחת המטרות שלנו היא לצמצם את הזיכרון שמשמש בכרטיסיות שלא אתה משתמש בהן בפועל. בדקתי אילו כרטיסיות צורכות את זיכרון המערכת שלי במנהל המשימות של Chrome, ולמעשה אני משתמש באחד או שניים מהאתרים הבאים, בעוד ששאר הכרטיסיות ברקע לא בשימוש.

מנהל המשימות שנדרש בזיכרון

במקרה כזה, מחיקת הכרטיסיות יכולה לעזור לנו לצמצם את השימוש בזיכרון.

מחיקת כרטיסיות שאינן בשימוש

מחיקת הכרטיסיות מאפשרת ל-Chrome למחוק באופן אוטומטי כרטיסיות שלא מעניינות אתכם אם המערכת מזהה שזיכרון המערכת נמוך יחסית. מה המשמעות של ביטול המינוי? כרטיסייה שנמחקה לא הולכת לשום מקום. נהרוג אותו, אבל הוא עדיין מופיע בשורת הכרטיסיות ב-Chrome. כשחוזרים לכרטיסייה שנמחקה, היא נטענת מחדש כשלוחצים עליה. תוכן הטופס, מיקום הגלילה וכן הלאה נשמרים ומשוחזרים באותו אופן שבו היו מופיעים במהלך הניווט בכרטיסיות קדימה או אחורה.

יש לנו גם תכונה חדשה נוספת שמאפשרת לשמור במטמון את כל משאבי הכרטיסיות באופן מקומי, שעובדת מצוין עם מחיקת כרטיסיות כשבמצב אופליין. כשהכרטיסייה מופעלת מחדש, אנחנו מציעים לכם לטעון מחדש את גרסת המטמון שנטענה בעבר ברשת. כדי להפעיל מחדש את הטעינה מחדש של הדף מהמטמון, תוכלו לנסות ניסוי נוסף ב-chrome://flags/#show-saved-copy.

אפשר לנסות את מחיקת הכרטיסיות כבר היום – פשוט מפעילים אותה דרך chrome://flags/#enable-tab-discarding ומפעילים מחדש את Chrome. אפשר לקבוע אם להפעיל או להשבית אותה דרך אותו דף chrome://flags ב-Chrome.

הפעלת צילום מסך של מחיקת כרטיסיות.
צילום מסך של לחצן ההפעלה מחדש.

דף חדש בשם chrome://discards מאפשר לכם לפרט אילו כרטיסיות פתוחות כרגע, ואנחנו מנסים לשתף איתכם תובנות כדי להבין עד כמה הן מעניינות (לדעתנו הן מעניינות אתכם, מהגבוה לנמוך).

צילום מסך של דף הכרטיסיות שנמחקו.

כדי לבדוק את התכונה, אפשר לבצע את התנהגות הגלישה הרגילה עד שהמערכת נמצאת במצב של נפח זיכרון נמוך, או להפעיל כרטיסייה שמסירת כרטיסייה מ-about:discards על ידי לחיצה על 'Ignore tab now' (מחיקת כרטיסייה עכשיו). פעולה זו תמחק את הכרטיסייה האחרונה ברשימה. ניתן גם למחוק כרטיסייה מסוימת מהרשימה באמצעות לחיצה על הלחצן 'ביטול' המתאים לה. כרטיסייה שנמחקה תופיע עם הקידומת [נמחק].

צילום מסך לדוגמה של כרטיסייה שנמחקה.

מחיקה באמצעות כרטיסייה מוחקת כרטיסיות בסדר הבא:

  • דפים פנימיים, כמו דף כרטיסייה חדשה, סימניות וכו'
  • כרטיסיות שנבחרו לפני זמן רב
  • כרטיסיות שנבחרו לאחרונה
  • אפליקציות שפועלות בחלון
  • כרטיסיות מוצמדות
  • הכרטיסייה שנבחרה

הפעלנו את האפשרות למחוק את הניסוי בכרטיסייה ב-Chrome Canary עבור Windows ו-Mac OS, ובקרוב נשיק הטמעה של Linux.

כרטיסיות מוצמדות נלקחות בחשבון גם בעת בדיקה אם למחוק כרטיסייה.

השראה: היי, השעיה נהדרת

אם מחיקת הכרטיסייה נשמעת מוכרת, זה מפני שסביר להניח שנתקלת בתוספי Chrome שימושיים שמעניקים לך גרסה מעט פשוטה יותר של הרעיון, כגון The Great המרעה. המטרה של 'ההשעיה הגדולה' היא לצמצם את הזיכרון ואת טביעת הרגל הפחמנית של Chrome, על ידי השהיית כרטיסיות אחרי תקופה מותאמת אישית של חוסר פעילות.

צילום מסך של השעיה.

בדומה למחיקת כרטיסיות, אפשר לבטל השעיה של כרטיסיות כשיהיה צורך לחזור אליהן. התכונה 'גרייט השעיה' שומרת את הכותרת והסמל של כל כרטיסייה, ומציגה כרטיסיות מושעות במצב מעומעם, מה שהופך אותן ישר קדימה לניווט בחזרה אליהן בכל שלב.

צילום מסך של סמל הכרטיסיות המושעות.

כרטיסיות שאני לא משתמש בהן באופן פעיל ברקע הושעו, והן חוסכות בזיכרון. אבל כרטיסיות שאני עדיין משתמש בהן (GitHub ו-YouTube) ממשיכות לפעול כרגיל.

למעשה ניהלנו צ'אט נהדר עם המחבר של תוסף 'ההשעיה הגדולה' בזמן שפיתחנו את מחיקת הכרטיסיות, והם שמחים לראות שאנחנו מתמודדים באופן מקורי עם הבעיה הזו בדרכים יעילות יותר מכפי שהתוסף יכול לעשות, כמו אובדן המצב של חוסר הפעולות שהמשתמשים מבצעים.

שיפורים עתידיים: עורך הסדרות של הכרטיסיות

עורך הסדרה של הכרטיסיות הוא עבודה עתידית שלדעתנו עשויה להוביל לשיפורים משמעותיים בגישה הנוכחית שלנו להסרת כרטיסיות. הוא לוקח את התוכן של כרטיסייה ב-Chrome ומסדר את המצב *הנוכחי* שלה ל-blob בינארי. בהמשך אפשר לבצע פעולת deserialזציה של ה-blob הבינארי הזה לכרטיסייה.

באמצעות המספר הסידורי, כמעט כל מה ש-Chrome , Blink ו-V8 צריכים כדי לשמור כראוי כרטיסייה (יש משהו שבעבר לא ניתן היה להשיג בקלות בעזרת תוספים ל-Chrome שמטפלים בבעיה הזו). עריכה בסידרה תכלול את החשודים הרגילים: ה-DOM (עם הרבה WebGL ו-Canvas), CSS והמצב של ה-VM V8 JavaScript.

צילום מסך של קונספט של יוצר הסדרה

אם אתם משתמשים ב-Android או ב-ChromeOS, אתם עשויים לדעת ש (בדומה לכרטיסייה שבה נמחקת ניסוי שהוזכר בפוסט הזה), אנחנו סוגרים כרטיסיות ברקע באגרסיביות כדי להבטיח שימוש מועט בזיכרון. הבעיה בדרך שבה אנחנו מתמודדים עם הבעיה הייתה שהכרטיסייה תאבד את *כל* המצב שלה.

כשהתעניינת בכרטיסייה שוב, היינו צריכים לטעון אותה מחדש וכל האינטראקציה שלך איתה תאבד. עורך הסדרה של הכרטיסיות פשוט ניגש לבעיה הזו באופן שמחזיר אתכם כמעט בדיוק כפי שהייתם, מבלי שתצטרכו לחזור לרשת. נשמח לשתף מידע נוסף על היצירה במועד מאוחר יותר.

אפשר לנסות את מחיקת הכרטיסיות ולספר לנו מה דעתך

נשמח לדעת אם התכונה הזו מועילה לכם ואיך אפשר לשפר אותה. נסו אותו, שחקו איתו (במיוחד אם אתם מנהלי כרטיסיות!) וספרו לנו מה דעתכם בתגובות. :) נשמח גם אם תכתבו פנייה על באג באתר crbug.com.