کاهش ردپای حافظه کروم یکی از اولویت های اصلی تیم در سال جاری است. به لطف بهبود فرآیند جمعآوری زباله در V8، تا 45 درصد کاهش مصرف حافظه GMail را شاهد بودهایم، اما واقعاً تازه شروع کردهایم. یکی از آزمایشهای بعدی ما در استفاده از حافظه، با هدف ذخیرهکنندگان تب (مثل خودم) است. به آن Tab Discarding می گویند.
دور انداختن برگه بهعنوان آزمایشی در Chrome 46 و بالاتر در دسترس است.
زمینه
برای هر برگهای که باز میکنید، فرآیند رندر ما معمولاً حدود 50 مگابایت در هر برگه طول میکشد، حتی اگر بیشتر افراد در هر بار فقط از یک برگه استفاده میکنند. اگر 10 برگه باز داشته باشید، حداقل 450 مگابایت حافظه صرف می شود تا وضعیت برگه پس زمینه شما حفظ شود. این می تواند با گذشت زمان کمی سخت شود.
یکی از اهداف ما کاهش حافظه مورد استفاده در برگه هایی است که واقعاً از آنها استفاده نمی کنید. اگر در «مدیریت وظیفه Chrome» به این موضوع نگاه کنم که چه برگههایی حافظه سیستم من را مصرف میکنند، در واقع فقط از یکی دو تا از سایتهای زیر «استفاده» میکنم در حالی که سایر برگهها در پسزمینه استفاده نمیشوند.
اینجاست که حذف برگه ها می تواند به کاهش استفاده از حافظه ما کمک کند.
دور انداختن برگههای استفاده نشده
صرفنظر کردن از برگهها به کروم اجازه میدهد تا بهطور خودکار برگههایی را که برای شما جالب نیستند، زمانی که تشخیص داده میشود حافظه سیستم بسیار کم است، کنار بگذارد. منظور ما از دور انداختن چیست؟ خوب، یک برگه حذف شده به جایی نمی رسد. ما آن را می کشیم اما همچنان در نوار برگه کروم قابل مشاهده است. اگر به برگهای که نادیده گرفته شده است برگردید، با کلیک دوباره بارگیری میشود. محتوای فرم، موقعیت اسکرول و غیره ذخیره و بازیابی میشوند، همانطور که در طول پیمایش برگه به جلو/عقب انجام میشود.
ما همچنین یک ویژگی جدید دیگر داریم که اجازه میدهد تمام منابع برگهها را به صورت محلی ذخیره کند که به خوبی با حذف برگهها در زمان آفلاین کار میکند. هنگامی که برگه مجدداً فعال شد، ما به شما این گزینه را پیشنهاد می کنیم که نسخه ذخیره شده را که قبلاً از طریق شبکه بارگذاری شده بود، مجدداً بارگیری کنید. برای فعال کردن بارگیری مجدد صفحه از حافظه پنهان، میتوانید آزمایش دیگری را در chrome://flags/#show-saved-copy
امتحان کنید.
امروز میتوانید با فعال کردن آن از طریق chrome://flags/#enable-tab-discarding
و راهاندازی مجدد Chrome، حذف برگه را امتحان کنید. میتوانید فعال یا غیرفعال بودن آن را از طریق همان صفحه Chrome chrome://flags
کنترل کنید.
صفحه جدیدی به نام chrome://discards
به شما امکان میدهد فهرستی از برگههایی که در حال حاضر باز هستند را فهرست کنید و ما سعی میکنیم اطلاعاتی را در مورد اینکه چقدر (به نظر ما) برای شما جالب هستند، از بیشتر به حداقل، به اشتراک بگذاریم.
برای آزمایش این ویژگی، میتوانید رفتار عادی مرور خود را تا زمانی که سیستم شما در حالت حافظه کم قرار گیرد، انجام دهید، یا با کلیک روی «Discard tab now»، حذف برگه از about:discards را فعال کنید. با این کار آخرین برگه در لیست حذف می شود. همچنین میتوانید با کلیک کردن روی دکمه «رد کردن» مربوطه، یک برگه خاص را از فهرست حذف کنید. یک برگه حذف شده با پیشوند [Discarded] نمایش داده می شود.
دور انداختن برگه ها، برگه ها را به ترتیب زیر حذف می کند:
- صفحات داخلی مانند صفحه برگه جدید، نشانک ها و غیره.
- برگهها مدتها پیش انتخاب شدهاند
- برگههایی که اخیراً انتخاب شدهاند
- برنامه های در حال اجرا در یک پنجره
- برگه های پین شده
- برگه انتخاب شده
ما آزمایش حذف برگه را در Chrome Canary برای Windows و Mac OS با اجرای لینوکس به زودی فعال کردهایم.
الهام: سلام، تعلیق عالی
اگر دور انداختن برگهها آشنا به نظر میرسد، به این دلیل است که احتمالاً با افزونههای مفید Chrome مواجه شدهاید که نسخه کمی سادهتر از این ایده را به شما ارائه میدهند، مانند The Great Suspender . هدف Great Suspender کاهش حافظه کروم و ردپای GPU با تعلیق برگهها پس از یک دوره عدم فعالیت سفارشی است.
مانند حذف برگه ها، زمانی که نیاز به تعامل مجدد با آنها دارید، می توان برگه ها را از حالت تعلیق خارج کرد. Great Suspender عنوان و فاویکون هر برگه را حفظ می کند و برگه های معلق را در حالت کم نور نشان می دهد و باعث می شود هر زمان که بخواهید به سمت آنها بروید.
برگههای پسزمینه که من فعالانه از آنها استفاده نمیکنم به حالت تعلیق درآمدهاند و در حافظه صرفهجویی میشود. برگه هایی که من هنوز به طور فعال از آنها استفاده می کنم (GitHub و YouTube) همچنان به طور معمول در حال اجرا هستند.
ما در واقع یک گپ عالی با نویسنده برنامه افزودنی Great Suspender در حین توسعه حذف برگه داشتیم و آنها خوشحالند که ما را می بینند که به طور بومی با این مشکل به روش هایی کارآمدتر از یک برنامه افزودنی مقابله می کنیم، مانند از دست دادن وضعیت عدم فعالیت کاربر شما
پیشرفتهای آینده: سریالساز تب
سریالساز برگه یک کار آینده است که ما فکر میکنیم ممکن است به پیشرفتهای قابل توجهی در رویکرد فعلی ما برای حذف برگهها منجر شود. محتویات یک برگه کروم را می گیرد و وضعیت * فعلی* آن را در یک حباب باینری سریال می کند. این لکه باینری می تواند بعداً به یک برگه تبدیل شود.
سریالساز تقریباً هر چیزی را که Chrome، Blink و V8 برای حفظ درست یک برگه نیاز دارند، سریالسازی میکند (چیزی که افزونههای کروم برای مقابله با این مشکل از لحاظ تاریخی نتوانستهاند به راحتی به آن دست یابند). سریال سازی شامل مظنونین معمولی می شود: DOM (با تعداد زیادی WebGL و Canvas شامل)، CSS و وضعیت VM جاوا اسکریپت V8.
اگر از Android یا ChromeOS استفاده میکنید، ممکن است بدانید که (مشابه آزمایش حذف برگه که در این پست توضیح داده شده است) برای اطمینان از مصرف کم حافظه، برگههای پسزمینه را به شدت میکشیم. مشکل روشی که ما با آن مقابله می کنیم این بود که برگه شما *تمام* حالت خود را از دست می داد.
وقتی دوباره به برگه علاقه نشان دادید، باید آن را دوباره بارگیری کنیم و تمام تعامل شما با آن از بین میرود. سریالساز برگه فقط به این مشکل برخورد میکند که شما را تقریباً به همان چیزی که بودید برمیگرداند بدون اینکه نیازی به بازگشت به شبکه داشته باشید. ما مشتاقانه منتظر به اشتراک گذاشتن اطلاعات بیشتر در مورد این کار در تاریخ بعدی هستیم.
دور انداختن برگه را امتحان کنید و نظر خود را با ما در میان بگذارید
مایلیم بدانیم که آیا این ویژگی برای شما مفید است و چگونه می توان آن را بهبود بخشید. آن را امتحان کنید، با آن بازی کنید (مخصوصا اگر از محفوظات تب ها هستید!) و نظر خود را در نظرات به ما بگویید. :) همچنین اگر برای هر اشکالی که در crbug.com با آن مواجه می شوید، بلیط ارسال کنید، سپاسگزار خواهیم بود.