Penghapusan Tab di Chrome - Eksperimen Menghemat Memori

Addy Osmani
Addy Osmani

Mengurangi jejak memori Chrome adalah salah satu prioritas utama tim tahun ini. Kami telah melihat pengurangan penggunaan memori Gmail hingga 45% berkat peningkatan proses pengumpulan sampah V8, tetapi kami benar-benar baru memulai. Salah satu eksperimen kami berikutnya dalam penggunaan memori ditujukan untuk pengguna tab (seperti saya). Caranya adalah Penghapusan Tab.

Tidak semua tab 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 dihabiskan hanya untuk mempertahankan status tab latar belakang Anda. Ini bisa menjadi sedikit sulit dari waktu ke waktu.

Memori yang diperlukan per tab

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

Pengelola tugas yang memerlukan memori

Di situlah penghapusan tab dapat membantu mengurangi penggunaan memori.

Membuang tab yang tidak digunakan

Penghapusan tab memungkinkan Chrome secara otomatis menghapus tab yang tidak menarik bagi Anda saat terdeteksi bahwa memori sistem hampir habis. Apa yang kami maksud dengan membuang? Nah, {i>tab<i} yang dibuang tidak akan pergi ke mana-mana. Kami akan menghentikannya, tetapi masih terlihat di tab setrip Chrome. Jika Anda kembali ke tab yang telah dibuang, tab itu akan dimuat ulang ketika 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 cache semua resource tab secara lokal, yang dapat berfungsi baik dengan penghapusan tab saat Anda offline. Saat tab diaktifkan kembali, kami menawarkan pilihan untuk memuat ulang versi 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.

Aktifkan penghapusan screenshot.
Screenshot tombol luncurkan kembali.

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

Screenshot halaman tab dihapus.

Untuk menguji fitur ini, Anda dapat melakukan perilaku penjelajahan normal hingga sistem 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 [Dibuang].

Screenshot contoh tab dihapus.

Penghapusan tab akan menghapus tab dalam urutan ini:

  • Halaman internal seperti halaman tab baru, bookmark, dll.
  • Tab yang sudah lama dipilih
  • Tab yang dipilih baru-baru ini
  • Aplikasi yang berjalan di jendela
  • Tab yang disematkan
  • 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 atau tidak

Inspirasi: halo, tali pengikat yang bagus

Jika penghapusan tab terdengar familier, ini karena Anda mungkin menemukan ekstensi Chrome yang berguna dan memberikan versi ide yang sedikit lebih sederhana, seperti The Great Suspender. Great Suspender bertujuan untuk mengurangi jejak memori dan GPU Chrome dengan menangguhkan tab setelah tidak aktif selama jangka waktu tertentu.

Screenshot penangguhan.

Serupa dengan penghapusan tab, penangguhan tab dapat dibatalkan saat Anda perlu berinteraksi dengan tab tersebut lagi. Great Suspender mempertahankan setiap judul dan favicon tab, menampilkan tab yang ditangguhkan dalam keadaan redup, sehingga memudahkan navigasi kembali kapan saja.

Screenshot favicon tab yang ditangguhkan.

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

Kami sebenarnya berbincang dengan penulis ekstensi Great Suspender selagi mengembangkan penghapusan tab, dan mereka senang melihat kami secara native mengatasi masalah ini dengan cara yang lebih efisien daripada kemampuan ekstensi, seperti kehilangan status ketidakaktifan pengguna.

Peningkatan di masa mendatang: serialisasi tab

Penserialisasi tab adalah bagian dari pekerjaan mendatang yang menurut kami dapat menghasilkan peningkatan yang signifikan pada pendekatan kami saat ini untuk penghapusan tab. Fungsi ini mengambil konten tab Chrome dan menserialisasi status *saat ini* ke dalam blob biner. Blob biner ini nantinya dapat dideserialisasi menjadi tab.

Penserialisasi akan menserialisasi hampir semua yang diperlukan Chrome, Blink, dan V8 untuk mempertahankan tab dengan benar (sesuatu yang ekstensi Chrome yang secara historis menangani masalah ini secara historis belum dapat dicapai dengan mudah). Serialisasi akan menyertakan curian yang biasa terjadi: DOM (dengan banyak WebGL dan Canvas), CSS, dan status VM JavaScript V8.

Screenshot konsep serialisasi

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

Jika Anda kembali tertarik pada tab tersebut, kami harus memuat ulang tab tersebut dan semua interaksi Anda dengan tab tersebut akan hilang. Penserialisasi tab hanya mendekati masalah ini dengan cara yang membuat Anda kembali ke keadaan semula tanpa harus kembali ke jaringan. Kami berharap dapat membagikan informasi selengkapnya tentang upaya ini di kemudian hari.

Coba hapus tab dan beri tahu kami pendapat Anda

Kami ingin tahu apakah fitur ini berguna bagi Anda dan cara meningkatkannya. Cobalah, cobalah-coba fitur ini (terutama jika Anda adalah penumpuk tab) dan sampaikan pendapat Anda di komentar. :) Kami juga akan sangat menghargai jika Anda melaporkan tiket untuk bug yang Anda temui di crbug.com.