Penghapusan Tab di Chrome - Eksperimen Menghemat Memori

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

Tidak semua tab yang terbuka adalah tab yang digunakan. Jika memori hampir habis, 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 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. Hal ini dapat menjadi sedikit sulit seiring waktu.

Memori yang diperlukan per tab

Salah satu sasaran kami adalah mengurangi memori yang digunakan di tab yang tidak benar-benar Anda gunakan. Jika saya melihat tab yang menggunakan memori sistem di Pengelola Tugas Chrome, saya hanya 'menggunakan' satu atau dua situs di bawah, sedangkan tab lainnya di latar belakang tidak digunakan.

Pengelola tugas yang memerlukan memori

Di sinilah penghapusan tab dapat membantu mengurangi penggunaan memori.

Menghapus tab yang tidak digunakan

Penghapusan tab memungkinkan Chrome otomatis menghapus tab yang tidak terlalu menarik bagi Anda saat terdeteksi bahwa memori sistem hampir habis. Apa yang dimaksud dengan menghapus? Tab yang dihapus tidak akan hilang. Kita menghentikannya, tetapi tab tersebut masih terlihat di panel tab Chrome. Jika Anda kembali ke tab yang telah dihapus, tab tersebut akan dimuat ulang saat diklik. Konten formulir, posisi scroll, dan sebagainya disimpan dan dipulihkan dengan cara yang sama seperti selama navigasi tab maju/mundur.

Kami juga memiliki fitur baru lainnya yang memungkinkan penyimpanan dalam cache semua resource tab secara lokal yang 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 bagian chrome://flags/#show-saved-copy.

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

Mengaktifkan screenshot penghapusan tab.
Screenshot tombol peluncuran ulang.

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

Screenshot halaman tab yang dihapus.

Untuk menguji fitur ini, Anda dapat melakukan perilaku penjelajahan normal hingga sistem Anda berada dalam mode memori rendah, atau memicu penghapusan tab dari about:discards dengan mengklik 'Hapus tab sekarang'. Tindakan ini akan menghapus 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 [Dihapus].

Screenshot contoh tab yang dihapus.

Penghapusan tab akan menghapus tab dalam urutan ini:

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

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

Tab yang disematkan juga dipertimbangkan saat melihat apakah akan menghapus tab

Inspirasi: hey there, great suspender

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

Screenshot penangguh.

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

Screenshot favicon tab yang 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 melakukan percakapan yang bagus dengan penulis ekstensi Great Suspender saat mengembangkan penghapusan tab dan mereka senang melihat kami secara native menangani masalah ini dengan cara yang lebih efisien daripada yang mungkin dapat dilakukan ekstensi, seperti kehilangan status ketidakaktifan pengguna Anda.

Peningkatan mendatang: serializer tab

Serialisasi tab adalah pekerjaan mendatang yang menurut kami dapat menghasilkan peningkatan signifikan pada pendekatan kami saat ini untuk penghapusan tab. Fungsi ini mengambil konten tab Chrome dan melakukan serialisasi statusnya *saat ini* menjadi blob biner. Blob biner ini nanti dapat dideserialisasi ke dalam tab.

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

Screenshot konsep Serializer

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

Jika Anda menunjukkan minat pada tab lagi, kami harus memuat ulang tab tersebut dan semua interaksi Anda dengan tab tersebut akan hilang. Serialisasi tab hanya mendekati masalah ini dengan cara yang membuat Anda kembali ke hampir persis seperti yang Anda lakukan tanpa harus kembali ke jaringan. Kami berharap dapat membagikan informasi selengkapnya tentang pekerjaan ini di lain waktu.

Coba penghapusan tab dan beri tahu kami pendapat Anda

Kami ingin mengetahui apakah fitur ini berguna bagi Anda dan bagaimana fitur ini dapat ditingkatkan. Cobalah, mainkan (terutama jika Anda adalah kolektor tab) dan beri tahu kami pendapat Anda di komentar. :) Kami juga akan sangat senang jika Anda mengajukan tiket untuk bug yang Anda temukan di crbug.com.