Random access memory (RAM) merupakan resource berharga dalam setiap lingkungan pengembangan software, terlebih pada sistem operasi seluler yang sering dibatasi oleh memori fisik. Meskipun baik Android Runtime (ART) maupun mesin virtual Dalvik menjalankan pembersihan sampah memori secara rutin, hal ini tidak berarti Anda dapat mengabaikan kapan dan di mana aplikasi Anda mengalokasikan dan melepaskan memori. Anda tetap perlu menghindari timbulnya kebocoran memori, yang biasanya disebabkan
oleh penahanan referensi objek dalam variabel anggota statis, dan melepaskan objek Show
Halaman ini menjelaskan cara mengurangi penggunaan memori secara proaktif dalam aplikasi Anda. Untuk informasi tentang cara sistem operasi Android mengelola memori, lihat Ringkasan Pengelolaan Memori Android. Memantau memori yang tersedia dan penggunaan memoriAgar dapat memperbaiki masalah penggunaan memori pada aplikasi, Anda harus menemukan masalah tersebut terlebih dahulu. Memory Profiler di Android Studio membantu Anda menemukan dan mendiagnosis masalah memori melalui cara berikut:
Melepaskan memori sebagai respons terhadap peristiwaSeperti dijelaskan dalam Ringkasan Pengelolaan Memori Android, Android bisa mendapatkan kembali memori dari aplikasi Anda melalui beberapa cara atau, jika perlu, mengakhiri aplikasi Anda sepenuhnya guna
mengosongkan memori untuk tugas-tugas penting. Untuk menyeimbangkan memori sistem lebih jauh lagi dan menghindari pengakhiran proses aplikasi oleh sistem, Anda dapat mengimplementasikan antarmuka Misalnya, Anda dapat mengimplementasikan callback
Callback Memeriksa banyaknya memori yang sebaiknya digunakan Agar beberapa proses dapat berjalan sekaligus, Android menetapkan batas pasti ukuran heap yang dialokasikan untuk setiap aplikasi. Batas ukuran heap yang pasti ini bervariasi antarperangkat, tergantung banyaknya RAM yang dimiliki perangkat secara keseluruhan. Jika aplikasi Anda telah mencapai kapasitas heap
dan mencoba mengalokasikan lebih banyak memori, sistem akan menampilkan Untuk menghindari kehabisan memori, Anda dapat mengkueri sistem untuk mengetahui banyaknya ruang heap yang Anda miliki pada perangkat saat ini. Untuk mengetahui angkanya, panggil Cuplikan kode berikut menunjukkan contoh bagaimana Anda dapat menggunakan metode
Menggunakan konstruksi kode yang lebih hemat memoriBeberapa fitur Android, class Java, dan konstruksi kode cenderung menggunakan lebih banyak memori dibandingkan yang lain. Anda dapat meminimalkan banyaknya memori yang digunakan aplikasi dengan memilih alternatif yang lebih efisien dalam kode Anda. Menggunakan layanan seperlunyaMembiarkan layanan berjalan saat tidak diperlukan merupakan salah satu kesalahan pengelolaan memori terburuk yang bisa dilakukan aplikasi Android. Jika aplikasi Anda memerlukan layanan untuk menjalankan tugas di latar belakang, jangan biarkan layanan tersebut terus berjalan kecuali jika diperlukan untuk menjalankan tugas. Ingatlah untuk menghentikan layanan saat tugasnya selesai. Jika tidak, Anda berisiko menimbulkan kebocoran memori secara tidak sengaja. Saat Anda memulai layanan, sistem lebih suka mempertahankan agar proses untuk layanan tersebut selalu berjalan. Perilaku ini menjadikan proses layanan sangat tidak efisien karena RAM yang digunakan oleh layanan tidak tersedia untuk proses-proses lainnya. Keadaan ini mengurangi jumlah proses yang di-cache yang dapat dipertahankan sistem dalam cache LRU, sehingga peralihan aplikasi menjadi kurang efisien. Selain itu, tindakan ini dapat membebani sistem saat memori yang tersedia sangat terbatas dan sistem tidak dapat mempertahankan cukup proses untuk meng-hosting semua layanan yang sedang berjalan. Secara umum, sebaiknya Anda menghindari penggunaan layanan persisten karena jenis layanan ini terus-menerus membebani memori yang tersedia. Sebagai gantinya, kami merekomendasikan penggunaan implementasi alternatif seperti Jika Anda harus menggunakan layanan, cara terbaik untuk membatasi masa aktif layanan adalah dengan menggunakan Menggunakan container data yang dioptimalkan Beberapa class yang disediakan oleh bahasa pemrograman tidak dioptimalkan untuk penggunaan pada perangkat seluler. Misalnya, implementasi Framework Android mencakup beberapa container data yang dioptimalkan, termasuk Jika perlu, Anda dapat beralih ke array mentah kapan saja untuk menggunakan struktur data yang benar-benar ramping. Hati-hati dengan abstraksi kodeDeveloper sering menggunakan abstraksi sebagai praktik pemrograman yang baik, karena abstraksi dapat meningkatkan fleksibilitas dan pemeliharaan kode. Namun, abstraksi memunculkan risiko signifikan: biasanya, abstraksi memerlukan eksekusi kode yang lebih banyak, yang berarti memerlukan lebih banyak waktu dan lebih banyak RAM agar kode dapat dipetakan ke dalam memori. Karena itu, jika abstraksi Anda tidak memberikan manfaat signifikan, sebaiknya Anda menghindarinya. Menggunakan lite protobuf untuk data serialProtocol buffer (protobuf) adalah mekanisme tidak tergantung bahasa, tidak tergantung platform, dan dapat diperluas yang dirancang Google untuk membuat serialisasi data terstruktur—mirip dengan XML, tetapi lebih kecil, lebih cepat, dan lebih sederhana. Jika ingin menggunakan protobuf untuk data Anda, sebaiknya Anda selalu menggunakan lite protobuf dalam kode sisi klien. Protobuf reguler menghasilkan kode yang sangat panjang, yang dapat menyebabkan berbagai masalah pada aplikasi seperti peningkatan penggunaan RAM, peningkatan ukuran APK secara signifikan, dan eksekusi yang lebih lambat. Untuk mengetahui informasi selengkapnya, lihat bagian "Versi lite" di protobuf readme. Menghindari churn memoriSeperti yang disebutkan sebelumnya, peristiwa pembersihan sampah memori tidak memengaruhi performa aplikasi. Namun, banyaknya peristiwa pembersihan sampah memori yang terjadi dalam waktu singkat dapat dengan cepat menghabiskan daya baterai serta sedikit meningkatkan waktu untuk menyiapkan bingkai karena interaksi yang diperlukan antara pembersih sampah memori dan thread aplikasi data. Semakin banyak waktu yang dihabiskan sistem untuk pembersihan sampah memori, semakin cepat daya baterai habis. Sering kali, churn memori dapat menyebabkan sejumlah besar peristiwa pembersihan sampah memori terjadi. Dalam praktiknya, churn memori menunjukkan jumlah pengalokasian objek sementara yang terjadi dalam rentang waktu tertentu. Misalnya, Anda dapat mengalokasikan beberapa objek sementara dalam loop Tentu saja, Anda perlu menemukan area dalam kode dengan churn memori yang tinggi agar dapat mengatasi masalah ini. Untuk itu, sebaiknya Anda menggunakan Memory Profiler di Android Studio. Setelah mengidentifikasi area masalah dalam kode Anda, cobalah untuk mengurangi jumlah alokasi dalam area yang kritis performa. Pertimbangkan untuk mengeluarkan objek dari loop dalam, atau mungkin memindahkannya ke dalam struktur alokasi berbasis Factory. Kemungkinan lainnya adalah mengevaluasi apakah kumpulan objek menguntungkan kasus penggunaan. Dengan kumpulan objek, bukan melepas instance objek di lantai, Anda akan melepaskannya ke dalam kumpulan setelah tidak diperlukan lagi. Saat berikutnya instance objek dari jenis tersebut diperlukan, instance tersebut dapat diperoleh dari kumpulan, bukan mengalokasikannya. Evaluasi performa secara menyeluruh sangat penting untuk menentukan apakah kumpulan objek cocok dalam situasi tertentu. Ada kalanya kumpulan objek dapat memperburuk performa. Meskipun menghindari alokasi, kumpulan tersebut menimbulkan overhead lain. Misalnya, mempertahankan kumpulan biasanya melibatkan sinkronisasi yang memiliki overhead yang tidak dapat diabaikan. Selain itu, menghapus instance objek gabungan (untuk menghindari kebocoran memori) selama release, lalu inisialisasinya selama acquire dapat memiliki overhead yang bukan nol. Terakhir, menahan lebih banyak instance objek di dalam kumpulan daripada yang diinginkan juga akan membebani GC. Meskipun kumpulan objek mengurangi jumlah pemanggilan GC, kumpulan objek tersebut pada akhirnya meningkatkan jumlah pekerjaan yang perlu dilakukan pada setiap pemanggilan, karena ini sebanding dengan jumlah byte live (yang dapat dijangkau). Menghapus resource dan library yang menguras memoriBeberapa resource dan library dalam kode Anda dapat menghabiskan memori tanpa Anda sadari. Ukuran keseluruhan APK, termasuk library pihak ketiga atau resource tersemat, dapat memengaruhi jumlah memori yang digunakan aplikasi Anda. Anda dapat memperbaiki konsumsi memori aplikasi dengan menghapus komponen, resource, atau library yang berlebihan, tidak perlu, atau membengkak dari kode Anda. Mengurangi ukuran APK secara keseluruhanAnda dapat mengurangi penggunaan memori aplikasi secara signifikan dengan mengurangi ukuran keseluruhan aplikasi. Ukuran bitmap, sumber daya, bingkai animasi, dan library pihak ketiga semuanya dapat berkontribusi pada ukuran aplikasi Anda. Android Studio dan Android SDK menyediakan beberapa alat untuk membantu Anda mengurangi ukuran sumber daya dan dependensi eksternal. Alat ini mendukung metode penyingkatan kode modern, seperti kompilasi R8. (Android Studio 3.3 dan yang lebih rendah menggunakan ProGuard, bukan kompilasi R8.) Untuk mengetahui informasi selengkapnya tentang cara mengurangi ukuran APK secara keseluruhan, lihat panduan cara mengurangi ukuran aplikasi Anda. Gunakan Dagger 2 untuk injeksi dependensiFramework injeksi dependensi dapat menyederhanakan kode yang Anda tulis dan memberikan lingkungan adaptif yang berguna untuk pengujian dan perubahan konfigurasi lainnya. Jika Anda ingin menggunakan framework injeksi dependensi pada aplikasi Anda, pertimbangkan untuk menggunakan Dagger 2. Dagger tidak menggunakan refleksi untuk memindai kode aplikasi. Dengan implementasi waktu kompilasi statis, Dagger dapat digunakan pada aplikasi Android tanpa biaya runtime atau penggunaan memori yang tidak perlu. Framework injeksi dependensi lain yang menggunakan refleksi cenderung menginisialisasi proses dengan memindai kode untuk menemukan anotasi. Proses ini dapat memerlukan siklus CPU dan RAM yang jauh lebih banyak, dan dapat menyebabkan keterlambatan yang kentara saat aplikasi diluncurkan. Hati-hati saat menggunakan library eksternalKode library eksternal sering kali tidak ditulis untuk lingkungan seluler dan dapat menjadi tidak efisien saat digunakan untuk bekerja pada klien seluler. Jika memutuskan untuk menggunakan library eksternal, Anda mungkin perlu mengoptimalkannya untuk perangkat seluler. Rencanakan tugas tersebut di muka dan analisis library dalam hal ukuran kode dan kebutuhan RAM sebelum memutuskan untuk menggunakannya. Bahkan beberapa library yang dioptimalkan untuk lingkungan seluler pun dapat menyebabkan masalah karena implementasinya yang berbeda. Misalnya, satu library mungkin menggunakan lite protobuf sementara library lain menggunakan micro protobuf, yang menghasilkan dua implementasi protobuf yang berbeda di aplikasi Anda. Hal ini dapat terjadi dengan berbagai implementasi logging, analisis, framework pemuatan gambar, penyimpanan cache, dan berbagai hal lainnya yang tidak Anda harapkan. Meskipun dapat membantu menghapus API dan resource dengan tanda yang tepat, ProGuard tidak dapat menghapus dependensi internal yang besar pada sebuah library. Fitur yang Anda inginkan dalam library ini mungkin memerlukan dependensi tingkat lebih rendah. Hal ini akan sangat menyulitkan jika Anda menggunakan subclass Selain itu, hindari menggunakan library bersama untuk hanya satu atau dua fitur dari lusinan fitur lainnya. Anda tentu tidak ingin menulis sejumlah besar kode dan overhead yang bahkan tidak Anda gunakan. Saat mempertimbangkan apakah akan menggunakan library, temukan implementasi yang benar-benar cocok dengan kebutuhan Anda. Jika tidak, Anda mungkin perlu membuat implementasi Anda sendiri. Apa penyebab RAM Android cepat penuh?Penyebab RAM HP cepat penuh
Aktivitas multitasking yang berlebihan – Terlalu banyak menjalankan aplikasi secara berlebihan juga dapat menyebabkan RAM HP cepat penuh. Dampak dari membuka banyak aplikasi biasanya HP terasa lag / macet, dan aplikasi sering keluar sendiri secara tiba-tiba.
Mengapa memori RAM pada sistem operasi Android sangat dibutuhkan dibandingkan dengan sistem operasi IOS?Fungsi RAM
Karena disimpan di sana, ponsel otomatis akan membaca, menjalankan, atau meluncurkan suatu aplikasi dengan cepat. Sebelum disimpan di RAM, berbagai file sistem dan aplikasi yang ada di ponsel sendiri, termasuk file sistem operasi (OS), tersimpan di memori internal perangkat.
Berapa RAM yang bagus untuk Android?RAM 1 GB masih layak, buktinya diluncurkan Ponsel-ponsel Android Go, dengan 1 GB RAM masih cukup untuk penggunaan dasar, dan harus selektif memilih aplikasi saja. RAM 2 GB pas-pasan buat yang suka main game tapi sudah lebih cukup untuk penggunaan sehari-hari, sosmed, aplikasi perkantoran dan lainnya.
RAM berpengaruh pada apa?Merdeka.com - Fungsi RAM pada Android benar-benar sangat penting karena RAM atau Random Access Memory merupakan penyimpanan berguna sebagai tempat menyimpan data sebuah perangkat, termasuk Android. Kapasitas ini dapat mempengaruhi Android saat memproses data dan perintah yang berikan.
|