Cara kerja aplikasi pembersih RAM dan ‘cache’ di iOS

Salah satu masalah umum yang sering dihadapi oleh pengguna perangkat iOS adalah masalah ketersediaan RAM (memori) dan storage space (ruang penyimpanan) yang menipis. Semakin lama ukuran aplikasi semakin besar. Setiap kali ada penambahan fitur ukurannya bertambah pula dan semakin lama digunakan ruang penyimpanan yang digunakan pun semakin besar. Padahal iPhone tidak dilengkapi dengan slot memori eksternal untuk mengatasi masalah ini.

Dari sinilah aplikasi-aplikasi pembersih RAM dan cache menjadi populer di App Store karena fungsinya cukup dibutuhkan oleh pengguna, terutama bagi pengguna yang memiliki iPhone dengan kapasitas penyimpanan yang rendah.

Lalu, apakah aplikasi-aplikasi penambah RAM dan pembersih cache tersebut memang benar-benar efektif menghapus file-file sementara/junk pada perangkat iOS? Dan kalau memang benar bekerja, bagaimana sih cara kerjanya?

Sandbox

Pada sistem operasi iOS, setiap aplikasi memiliki direktori “rumah” tersendiri di mana tiap-tiap aplikasi bisa menyimpan data-data yang diperlukan. Karena alasan keamanan, tiap aplikasi ini dibatasi untuk tidak bisa membuat atau menghapus file/direktori pada direktori lain di luar direktorinya sendiri di dalam file system. Batasan atau aturan ini dikenal sebagai application sandbox.

iOS app sandbox

Pada perangkat-perangkat yang sudah di-jailbreak, sebuah aplikasi bisa dibuat untuk melewati sandbox dan mengakses file atau direktori yang ada di direktori lain. Dengan jailbreak, sebuah aplikasi juga bisa memodifikasi file atau data aplikasi lainnya. Pada perangkat yang masih normal (belum di-jailbreak) hal ini tidak memungkinkan untuk dilakukan, karena dengan adanya sandbox maka tidak ada aplikasi yang bisa memodifikasi aplikasi lain.

Lalu, bagaimana sebuah aplikasi “cleaner” bisa menghapus cache dari aplikasi lain kalau sandbox membatasi semua aplikasi untuk tidak memodifikasi aplikasi lain?

Aplikasi-aplikasi pembersih RAM/cache ada yang di-install dari App Store, dan ada pula yang di-install dari Cydia (untuk yang sudah jailbreak). Untuk yang sudah jailbreak, aplikasi pembersih ini punya hak akses root sehingga bisa melewati sandbox dan mengerjakan apapun yang diperintahkannya. Aplikasi pembersih dari Cydia ini bekerja dengan cara memindai, mencari direktori cache aplikasi lain, dan kemudian mengeksekusinya sesuai kehendak pengguna. Jadi, aplikasi jailbreak biasanya bekerja secara langsung, yaitu dengan menghapus file-file atau direktori yang dianggap tidak penting. Sedangkan untuk aplikasi-aplikasi yang asalnya dari App Store (non-jailbreak) caranya lain lagi.

Pembersihan cache otomatis

Mungkin, yang jadi alasan utama kenapa tidak ada fitur penghapusan data sementara atau cache di iOS seperti yang ada di Android adalah karena prinsip “it just works” yang selalu dibanggakan Apple.

Sama dengan memori/RAM, Apple juga mendesain iOS supaya cache dikelola secara otomatis oleh sistem operasi tanpa perlu campur tangan pengguna. “Ini iOS, kalian tidak perlu mengerjakan pekerjaan rumahnya.” Kira-kira begitu lah.

Sebelum iOS 5 diluncurkan, sistem tidak pernah menghapus konten atau file-file sementara yang ada di direktori /Caches dan /tmp, jadi kedua direktori itu adalah tempat aman bagi aplikasi untuk menyimpan file-file yang bersifat sementara.

Pada iOS 5, bersamaan dengan diluncurkannya layanan iCloud dan fitur backup-nya, Apple mulai menindaki aplikasi-aplikasi yang terlalu banyak memakan tempat dan memenuhi direktori backup yang bisa membuat proses backup menjadi lama.

iOS Data Storage Guidelines:

Data that can be downloaded again or regenerated should be stored in the <Application_Home>/Library/Caches directory. Examples of files you should put in the Caches directory include database cache files and downloadable content, such as that used by magazine, newspaper, and map applications.

Data that is used only temporarily should be stored in the <Application_Home>/tmp directory. Although these files are not backed up to iCloud, remember to delete those files when you are done with them so that they do not continue to consume space on the user’s device.

Apple membuat aturan kalau direktori /Caches hanya boleh diisi oleh data-data yang bisa di-download ulang atau diproduksi ulang, sedangkan direktori /tmp hanya boleh diisi oleh data-data sementara dan harus dihapus kalau dibutuhkan agar tidak menempati terlalu banyak ruang.

iOS File System Basics:

Put temporary data in the tmp/ directory. Temporary data comprises any data that you do not need to persist for an extended period of time. Remember to delete those files when you are done with them so that they do not continue to consume space on the user’s device. The system will periodically purge these files when your app is not running; therefore, you cannot rely on these files persisting after your app terminates.

Put data cache files in the Library/Caches/ directory. Cache data can be used for any data that needs to persist longer than temporary data, but not as long as a support file. Generally speaking, the application does not require cache data to operate properly, but it can use cache data to improve performance. Examples of cache data include (but are not limited to) database cache files and transient, downloadable content. Note that the system may delete the Caches/ directory to free up disk space, so your app must be able to re-create or download these files as needed.

Dengan berlakunya aturan tersebut maka direktori /Cache dan /tmp adalah dua direktori yang tidak ikut ter-backup dan akan terhapus secara otomatis ketika perangkat kekurangan ruang kosong.

“Cleaning” appears when your device is clearing the app’s cache, which is a temporary storage area for documents and other data. You don’t need to do anything: just wait for the word to go away, which means the process is complete. No data is lost during cache cleaning, because your documents are stored on iCloud.

Ketika ruang kosong semakin berkurang, maka sistem akan menjalankan proses pembersihan secara otomatis yang bisa dilihat langsung pada ikon aplikasi yang berwarna abu-abu saat proses ini berjalan. Secara otomatis, itu kata kuncinya.

Bagaimana aplikasi pembersih cache bekerja

Seperti yang sudah dijelaskan sebelumnya, aplikasi jailbreak bekerja dengan cara menghapus file-file cache, logs, dan junks secara langsung.

Salah satu contoh aplikasi jailbreak yang cukup populer di Cydia adalah iCleaner. iCleaner melakukan pemindaian pada partisi user dan system dan mencari file-file dan direktori yang cocok dengan kriteria yang sudah ditentukan pengguna.

Beberapa file atau data yang bisa dihapus oleh iCleaner (atau aplikasi jailbreak semacamnya) adalah:

  • Attachment pesan
  • Cache dan file sementara dari aplikasi pihak ketiga
  • Cache dan file sementara dari sistem
  • Cache/cookies dari Safari
  • File update OTA yang sudah ter-download
  • Arsip data penggunaan baterai
  • File-file log
  • Paket bahasa yang jarang digunakan
  • Keyboard yang jarang digunakan
  • Font yang jarang diaktifkan
  • File-file asset/resource dari perangkat lain
  • dan masih banyak lagi.

Fitur-fitur tersebut bisa ada karena iCleaner adalah aplikasi jailbreak yang memiliki hak akses root, yang artinya hak aksesnya tidak terbatas oleh sandbox dan bisa melakukan pemindaian dan akses baca/tulis/eksekusi pada semua partisi dan direktori.

Kalau aplikasi App Store tidak bisa seperti itu karena terhalangi sandbox. Jadi bagaimana caranya?

Karena dibatasi oleh sandbox, aplikasi-aplikasi pembersih tidak bisa menghapus file yang ada di luar direktori rumahnya sendiri. Untuk itu, trik untuk bisa menghapus cache dari aplikasi lain adalah memanfaatkan mekanisme pembersihan cache/junk otomatis yang sudah ada pada iOS itu sendiri.

Secara sederhana, aplikasi pembersih akan memproduksi file yang besar bahkan cukup besar sampai hampir memenuhi ruang penyimpanan. Cara itu akan memicu sistem untuk menjalankan proses penghapusan cache secara otomatis. Sistem akan menghapus file-file sementara yang ada di /Caches dan /tmp untuk membuat ruang kosong. Setelah proses penghapusan otomatis menghasilkan cukup ruang, aplikasi pembersih itu kemudian menghapus lagi file besar yang diproduksinya sendiri, kemudian melaporkan jumlah data yang telah “dibersihkan” kepada pengguna.

Begitupun dengan aplikasi-aplikasi “pembersih RAM”. Untuk alasan keamanan aplikasi-aplikasi App Store tidak bisa mematikan (quit/terminate) aplikasi lain. Sebuah aplikasi hanya boleh berkomunikasi secara tidak langsung dengan aplikasi lainnya.

Apps communicate only indirectly with other apps on a device.

Lalu bagaimana cara sebuah aplikasi App Store membebaskan RAM kalau aplikasi tersebut tidak bisa menutup aplikasi lainnya? Tebak, caranya sama dengan di atas. Aplikasi ini memanfaatkan mekanisme pembebasan RAM secara otomatis.

Memory is a critical resource in iOS, and view controllers provide built-in support for reducing their memory footprint at critical times. The UIViewController class provides some automatic handling of low-memory conditions through its didReceiveMemoryWarning method, which releases unneeded memory.

Your app never calls this method directly. Instead, this method is called when the system determines that the amount of available memory is low.

Karena tidak bisa menutup aplikasi lain secara langsung, aplikasi pembersih akan meminta izin ke sistem (dan akan diijinkan) untuk memenuhi RAM sebanyak mungkin sampai memicu sistem untuk menutup aplikasi lain di memori. Jadi cara kerjanya itu secara tidak langsung.

Secara teknis cara kerja aplikasi pembersih di App Store dengan Cydia berbeda, tentunya. Mungkin yang baru tahu soal cara kerja aplikasi pembersih non-jailbreak akan langsung “ooh ternyata gitu” dan mungkin ada juga yang merasa ditipu karena ternyata prosesnya tidak sesuai dengan yang kita bayangkan selama ini (langsung remove/delete). Tapi sebenarnya cara seperti itu lebih aman karena menggunakaan fitur atau mekanisme bawaan dari iOS sendiri, lebih aman kalau dibandingkan menggunakan aplikasi jailbreak yang berpotensi merusak/menghapus file yang masih dibutuhkan sistem.

Membersihkan cache DIY

Sekarang Anda sudah tahu bagaimana cara kerja aplikasi pembersih cache/RAM di iOS. Untuk membersihkan cache sebenarnya ada cara lain selain menggunakan aplikasi pembersih. Yang penting prinsipnya sama, yaitu memenuhi memori sampai memicu sistem bertindak.

Beberapa cara di antaranya adalah:

  1. Dengan menyewa film dari iTunes Store (iPhone/iPad) yang ukurannya lebih besar dari kapasitas ruang kosong perangkat.
  2. Men-download aplikasi yang berukuran besar (lebih besar dari ruang kosong yang tersisa). Salah satu contoh aplikasi yang lumayan besar adalah Disney Infinity: Toy Box 3.0. Aplikasi ini berukuran 2.46 GB (FREE).
  3. Membuka aplikasi pembaca dokumen atau file manager dan menyalin file besar berulang kali sampai ruang penyimpanan penuh dan memicu proses penghapusan cache berjalan otomatis.

Kesimpulan

Aplikasi jailbreak/Cydia lebih ampuh dan lebih powerful dibanding aplikasi App Store karena punya hak akses tertinggi (root) dibandingkan aplikasi App Store yang serba terbatas (hak akses mobile). Selain file-file pada direktori /Caches dan /tmp, aplikasi jailbreak bisa menghapus file dan direktori yang normalnya tidak akan terhapus oleh sistem pada proses penghapusan otomatis.

Sistem atau metode penghapusan otomatis dari iOS lebih aman dibanding penghapusan yang dilakukan oleh aplikasi jailbreak, tetapi hasil (ruang kosong) yang diperoleh jauh lebih sedikit daripada menggunakan aplikasi jailbreak karena file yang dihapus oleh sistem hanya file/data yang bisa di-generate atau bisa di-download ulang dari Internet. Sedangkan pada aplikasi jailbreak, file/data yang dihapus bisa berupa file cache/sementara dan bisa juga file sistem yang tidak dapat di-download ulang (misalnya bahasa, keyboard, Launch Daemon, Voice control, dll) Kalau tidak hati-hati, menghapus file dari aplikasi jailbreak bisa mengganggu kinerja sistem atau bahkan merusaknya.

Referensi:
  • https://marco.org/2011/10/13/ios5-caches-cleaning
  • https://developer.apple.com/icloud/documentation/data-storage/index.html
  • https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html
  • https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW2
  • https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#//apple_ref/occ/instm/UIViewCont