Penghapusan Tab di Chrome - Eksperimen Menghemat Memori

Addy Osmani
Addy Osmani

Salah satu prioritas utama tim tahun ini adalah mengurangi jejak memori Chrome. Kami telah melihat pengurangan penggunaan memori Gmail hingga 45% berkat peningkatan proses pembersihan sampah memori V8, tetapi kami baru saja memulai. Salah satu eksperimen kami berikutnya dalam penggunaan memori ditujukan untuk pengumpul tab (seperti saya). Tindakan ini disebut Pembuangan Tab.

Tidak semua tab yang terbuka merupakan tab. Jika memori hampir penuh, Chrome dapat menghapus tab latar belakang yang tidak menarik.

Penghapusan tab tersedia sebagai eksperimen di Chrome 46 dan yang lebih baru.

Latar belakang

Untuk setiap tab yang Anda buka, proses perender kami biasanya memerlukan waktu sekitar 50 MB per tab, meskipun sebagian besar orang hanya menggunakan satu tab dalam satu waktu. Jika Anda membuka 10 tab, setidaknya ada 450 MB memori yang digunakan hanya untuk mempertahankan status tab latar belakang. Seiring berjalannya waktu, hal ini bisa menjadi sedikit berat.

Memori diperlukan per tab

Salah satu tujuan kami adalah mengurangi memori yang digunakan pada tab yang tidak benar-benar Anda gunakan. Jika melihat tab yang menghabiskan memori sistem di Task Manager pada Chrome, saya hanya 'menggunakan' satu atau dua situs di bawah, sementara tab lain di latar belakang tidak digunakan.

Pengelola tugas yang membutuhkan memori

Di situlah penghapusan tab dapat membantu mengurangi penggunaan memori kita.

Membuang tab yang tidak digunakan

Dengan membuang tab, Chrome dapat otomatis membuang tab yang tidak menarik bagi Anda saat terdeteksi bahwa memori sistem hampir habis. Apa yang dimaksud dengan membuang? Tab yang dihapus tidak akan hilang ke mana pun. Kita akan mematikannya tetapi masih terlihat di tab setrip Chrome. Jika Anda kembali ke tab yang telah dibuang, tab akan dimuat ulang saat diklik. Konten formulir, posisi scroll, dan sebagainya disimpan dan dipulihkan dengan cara yang sama seperti saat navigasi tab maju/mundur.

Kami juga memiliki fitur baru lainnya yang dapat menyimpan semua resource tab ke dalam cache secara lokal, yang akan berfungsi dengan baik dengan penghapusan tab saat Anda offline. Saat tab diaktifkan kembali, kami menawarkan pilihan untuk memuat ulang versi yang di-cache yang sebelumnya dimuat melalui jaringan. Untuk mengaktifkan pemuatan ulang halaman dari cache, Anda dapat mencoba eksperimen lain di chrome://flags/#show-saved-copy.

Anda dapat mencoba penghapusan tab hari ini dengan mengaktifkannya melalui chrome://flags/#enable-tab-discarding dan meluncurkan kembali Chrome. Anda dapat mengontrol apakah aktivasi ini diaktifkan atau dinonaktifkan melalui halaman chrome://flags Chrome yang sama.

Aktifkan screenshot penghapusan tab.
Screenshot tombol luncurkan ulang.

Halaman baru bernama chrome://discards memungkinkan Anda mencantumkan tab yang saat ini terbuka dan kami mencoba membagikan beberapa insight tentang seberapa menariknya bagi Anda, mulai dari yang paling umum hingga yang paling tidak.

Screenshot halaman tab yang dihapus.

Untuk menguji fitur ini, Anda dapat menjalankan perilaku penjelajahan normal hingga sistem dalam mode memori rendah, atau memicu penghapusan tab dari about:discards dengan mengklik 'Hapus tab sekarang'. Ini akan membuang tab terakhir dalam daftar. Anda juga dapat menghapus tab tertentu dari daftar dengan mengklik tombol 'Hapus' yang sesuai. Tab yang dihapus akan ditampilkan dengan awalan [Discarded].

Screenshot contoh tab yang dihapus.

Menghapus tab akan menghapus tab dalam urutan berikut:

  • Halaman internal seperti halaman tab baru, bookmark, dll.
  • Tab yang dipilih sudah lama
  • Tab dipilih baru-baru ini
  • Aplikasi yang berjalan di jendela
  • Tab tersemat
  • Tab yang dipilih

Kami telah mengaktifkan eksperimen penghapusan tab di Chrome Canary untuk Windows dan Mac OS, dan implementasi Linux akan segera hadir.

Tab yang disematkan juga dipertimbangkan saat melihat apakah akan menghapus tab atau tidak

Inspirasi: halo, bretel yang bagus

Jika penghapusan tab terdengar familiar, itu karena Anda mungkin pernah menemukan ekstensi Chrome yang berguna yang memberi Anda versi yang sedikit lebih sederhana dari ide ini, seperti The Great Suspender. Great Suspender bertujuan untuk mengurangi memori dan jejak GPU Chrome dengan menangguhkan tab setelah tidak aktif selama periode tertentu.

Screenshot Suspender.

Serupa dengan penghapusan tab, tab dapat dibatalkan penangguhannya saat Anda perlu berinteraksi dengannya lagi. Great Suspender mempertahankan setiap judul dan favicon tab, yang menampilkan tab yang ditangguhkan dalam status redup, sehingga memudahkan Anda untuk kembali ke tab tersebut kapan saja.

Screenshot favicon tab ditangguhkan.

Tab di latar belakang yang tidak saya gunakan secara aktif telah ditangguhkan, sehingga menghemat memori. Namun, tab yang masih saya gunakan secara aktif (GitHub dan YouTube) masih berjalan seperti biasa.

Kami benar-benar berbincang dengan penulis ekstensi Great Suspender saat mengembangkan penghapusan tab dan mereka senang melihat kami secara native mengatasi masalah ini dengan cara yang lebih efisien daripada yang dapat dilakukan oleh ekstensi, seperti kehilangan status saat pengguna tidak merespons.

Peningkatan di masa mendatang: serialisasi tab

Serializer tab adalah pekerjaan mendatang yang kami rasa dapat mengarah pada peningkatan signifikan pada pendekatan kami saat ini terkait penghapusan tab. Aplikasi ini mengambil konten tab Chrome dan melakukan serialisasi status *saat ini* ke dalam blob biner. Blob biner ini nantinya dapat dideserialisasi menjadi tab.

Serializer akan melakukan serialisasi hampir semua hal yang diperlukan Chrome, Blink, dan V8 untuk mempertahankan tab dengan benar (hal yang secara historis mengatasi masalah ini tidak dapat dicapai dengan mudah). Serialisasi akan mencakup tersangka yang biasa: DOM (dengan banyak WebGL dan Canvas disertakan), CSS, dan status VM JavaScript V8.

Screenshot konsep serialisasi

Jika Anda menggunakan Android atau ChromeOS, Anda mungkin tahu bahwa (serupa dengan eksperimen penghapusan tab yang dibahas di postingan ini) kami menghentikan tab latar belakang secara agresif untuk memastikan penggunaan memori rendah. Masalah dalam cara kita menanganinya adalah tab Anda akan kehilangan *semua* statusnya.

Jika Anda kembali menunjukkan minat pada tab, kami harus memuat ulang tab tersebut dan semua interaksi Anda dengan tab tersebut akan hilang. Serializer tab hanya menangani masalah ini dengan cara yang membuat Anda kembali ke versi yang hampir sama seperti sebelumnya tanpa perlu kembali ke jaringan. Kami berharap dapat membagikan informasi lebih lanjut tentang pekerjaan ini di kemudian hari.

Coba hapus tab dan beri tahu kami pendapat Anda

Kami ingin mengetahui apakah fitur ini berguna bagi Anda atau tidak, dan bagaimana cara meningkatkannya. Cobalah, bermain-main dengannya (terutama jika Anda seorang pengumpul tab!) dan beri tahu kami pendapat Anda di komentar. :) Kami juga akan sangat berterima kasih jika Anda mengajukan tiket untuk bug yang Anda temukan di crbug.com.