Bagaimana insinyur Facebook mengatasi kebocoran memori aplikasi yang sulit dipahami

Pemrogram yang membutuhkan istirahat dari sesi debugging maraton mungkin ingin membaca dengan teliti posting blog dari dua insinyur perangkat lunak Facebook, yang menawarkan tip dan kisah perang tentang membasmi kesalahan memori yang sulit dipahami di aplikasi iOS jaringan sosial, untuk informasi lebih lengkapnya di Berita Tutorial Terbaru.

Kesalahan memori dapat menjadi gangguan khusus bagi pengembang, mengingat betapa sulitnya melakukan debug. Jika Anda pernah memiliki aplikasi Facebook, atau aplikasi lain yang sedang berjalan, berhenti berjalan dan menghilang, kemungkinan besar karena kesalahan memori.

“Dengan beberapa alat, migrasi ke teknologi iOS terbaru, dan sedikit kepintaran untuk mengukur masalah di tempat pertama, kami dapat membuat aplikasi kami lebih andal,” tulis Ali Ansari dan Greg Pstrucha, dalam posting baru di Blog Rekayasa Facebook.

Singkatnya, program yang sedang berjalan menghilang karena sistem operasi mematikannya, kemungkinan besar karena aplikasi mulai melakukan hal-hal di luar ruang memori yang dialokasikan. Sistem operasi memberikan setiap program yang berjalan rentang memori sistem untuk melakukan pekerjaannya.

Sistem operasi juga dapat menghentikan program jika tiba-tiba mulai meminta memori tambahan dalam jumlah besar, yang dapat terjadi jika ada kebocoran memori yang pada akhirnya dapat menghabiskan semua memori sistem. Itu juga dapat mematikan program yang berfungsi sempurna ketika sistem itu sendiri kehabisan memori sistem karena alasan lain.

Dalam bahasa rekayasa Facebook, BOOM (background out-of-memory error) adalah ketika sebuah program mati di latar belakang dan FOOM adalah ketika sebuah program di layar tiba-tiba mati.

iOS mengirim pesan ke aplikasi yang memperingatkan bahwa penutupan akan segera terjadi, tetapi tidak ada jaminan bahwa aplikasi akan mencatat pesan itu sebelum dikirim ke kekosongan.

“Ini membuat kami tidak memiliki cara mudah untuk mengetahui bahwa aplikasi dimatikan oleh OS karena tekanan memori,” tulis para insinyur.

Meskipun demikian, para insinyur Facebook telah mengembangkan sejumlah teknik yang telah menurunkan tingkat keseluruhan kerusakan memori dari aplikasi iOS-nya.

Salah satu teknik yang mereka anggap berguna adalah membuat aplikasi tidak terlalu rewel dalam hal meminta dan kemudian melepaskan memori dari sistem operasi.

Insinyur Facebook pada awalnya berhati-hati tentang hanya menggunakan jumlah memori yang dibutuhkan. Kapan pun aplikasi membutuhkan lebih banyak memori, untuk melakukan tindakan seperti melihat halaman Web, aplikasi akan meminta lebih banyak lagi ke sistem operasi, dan kemudian segera melepaskan memori itu saat tugas selesai.

Namun, pendekatan ini tidak mengurangi jumlah kerusakan pada aplikasi. Dalam banyak kasus, memori yang dilepaskan itu bahkan tidak diambil kembali oleh iOS.

Sebaliknya, apa yang tampaknya membantu menurunkan tingkat kerusakan adalah membuat sedikit perubahan dalam jumlah memori yang dialokasikan. Aplikasi akan meminta semua memori yang diperlukan saat dimulai, lalu mencoba bekerja dalam batasan ini, untuk lebih lengkpanya di Teknosional.

Pendekatan ini saja mengurangi crash program sekitar 30 persen.

Apple memberikan beberapa bantuan tambahan dalam alokasi memori juga. Dalam versi 8 iOS, ia menyediakan kelas pemrograman baru yang disebut wkWebView, yang mengurangi tampilan halaman Web sebagai proses terpisah.

Tim Facebook juga menggunakan sejumlah alat yang dikembangkan secara internal untuk mendeteksi potensi kesalahan memori.

Salah satunya adalah alat pemindaian yang dikembangkan oleh Facebook secara internal dan dirilis sebagai sumber terbuka, yang disebut infrastruktur CT-Scan, yang awalnya dikembangkan untuk menyempurnakan kinerja aplikasi seluler. Ternyata efektif untuk menunjukkan kebocoran memori juga.

Tim juga mengembangkan profiler memori dalam aplikasi baru, yang melacak semua alokasi memori yang dibuat oleh program, tanpa menambahkan overhead ke program itu sendiri. Hal ini memungkinkan Facebook untuk mengumpulkan karakteristik operasional dari salinan uji program saat sedang berjalan.

Saat program diperbarui, tim dapat membandingkan jumlah memori yang dialokasikan oleh proses yang berbeda, antara versi baru dan versi lama. Perbedaan besar antara keduanya mungkin menunjukkan kebocoran memori yang sampai sekarang belum ditemukan.

Leave a Reply

Your email address will not be published. Required fields are marked *