Salah satu masalah umum yang sering dihadapi oleh pengguna iPhone adalah masalah ketersediaan RAM (memori) dan storage space (ruang penyimpanan). Ukuran aplikasi semakin lama semakin besar, tiap ada penambahan fitur ukurannya bertambah dan semakin lama digunakan space yang digunakan pun semakin besar pula. Sedangkan iPhone tidak dilengkapi dengan slot memori eksternal untuk memecahkan masalah ini.

Dari sinilah aplikasi-aplikasi pembersih RAM/cache menjadi populer di App Store karena fungsinya sangat dibutuhkan oleh pengguna terutama yang kapasitas penyimpanan iPhone-nya rendah.

Saya rasa sebagian besar pengguna perangkat iOS pernah pakai/disarankan pakai atau paling tidak pernah dengar salah satu nama aplikasi-aplikasi “cleaner” di App Store, jadi saya tidak perlu sebutkan namanya satu per satu.

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

Sandbox

Pada sistem operasi iOS, setiap aplikasi memiliki direktori “rumah” tersendiri di mana tiap-tiap aplikasi bisa menyimpan data-datanya. 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.

App sandbox

Pada perangkat yang sudah dijailbreak, aplikasi bisa dibuat melewati sandbox dan mengakses file atau direktori pada direktori lain. Dengan jailbreak, suatu aplikasi bisa saja memodifikasi file atau data dari aplikasi lainnya. Pada perangkat yang masih normal hal ini tidak memungkinkan, tidak ada aplikasi yang bisa memodifikasi aplikasi lain.

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

Aplikasi pembersih RAM/cache ada yang diinstall dari App Store, dan ada pula 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 dari App Store (non-jailbreak) lain lagi.

Pembersihan cache otomatis

Mungkin, yang jadi alasan utama kenapa tidak ada fitur penghapusan data pengguna dan cache di iOS seperti yang ada di Android adalah karena prinsip “it just works”-nya Apple. Sama dengan memori/RAM, Apple juga mendesain iOS supaya cache dikelola secara otomatis oleh sistem, 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 backupnya, Apple mulai menindaki aplikasi-aplikasi yang terlalu banyak memakan tempat dan memenuhi direktori backup yang bisa membuat proses backup menjadi lama.

  • 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 mengeluarkan aturan kalau direktori /Caches hanya boleh diisi oleh data yang bisa didownload ulang atau diproduksi ulang, sedangkan direktori /tmp hanya boleh diisi oleh data-data sementara dan harus dihapus kalau dibutuhkan agar tidak mengkonsumsi terlalu banyak tempat.

  1. 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.
  2. 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 terbackup 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 “Cleaning” secara otomatis yang bisa dilihat langsung pada ikon aplikasi yang berwarna abu-abu saat proses ini berjalan. Secara otomatis, itu kuncinya.

Bagaimana aplikasi pembersih bekerja

Seperti yang sudah saya singgung sebelumnya, aplikasi jailbreak bekerja dengan cara menghapus file-file cache, logs, 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 terdownload
  • Arsip data penggunaan baterai
  • File-file log
  • 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 aksesnya tidak terbatas 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 terhalang 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.

Secara sederhana, aplikasi pembersih akan memproduksi file yang besar bahkan cukup besar sampai hampir memenuhi ruang penyimpanan. Dengan begitu, sistem akan menjalankan proses penghapusan cache 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, 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) aplikasi lain. 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 ijin ke sistem (dan 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. 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 iOS, 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 merental film dari iTunes Store (iPhone/iPad) yang ukurannya lebih besar dari kapasitas ruang kosong perangkat.
  2. Mendownload 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 didownload ulang dari internet. Sedangkan pada aplikasi jailbreak, file/data yang dihapus bisa berupa file cache/sementara dan bisa juga file sistem yang tidak dapat didownload 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:
[Marco.org]
[iOS Data Storage Guidelines]
[iOS Developer Library]
[iOS Developer Library]
[iOS Developer Library]
[Apple Support]
[Stack Overflow]