Mengoptimalkan memori aplikasi
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Memori merupakan resource penting dalam setiap lingkungan pengembangan software, terlebih
pada sistem operasi seluler yang sering dibatasi oleh
memori fisik. Hal ini terutama berlaku untuk perangkat dengan memori bawaan rendah yang
umumnya ditemukan di Android (edisi Go). Ada beberapa cara untuk membantu mengoptimalkan memori
di aplikasi Anda agar dapat berjalan dengan lancar di lingkungan ini.
Praktik terbaik
Memangkas memori cache
Mungkin tidak tersedia cukup memori untuk mempertahankan proses latar belakang tetap berjalan
seperti di lingkungan pada umumnya. Jika demikian, Anda dapat menggunakan
onTrimMemory()
untuk memangkas memori yang tidak diperlukan dari proses aplikasi. Untuk mengidentifikasi
tingkat pemangkasan aplikasi saat ini secara optimal, gunakan
ActivityManager.getMyMemoryState(RunningAppProcessInfo)
dan optimalkan atau pangkas resource yang tidak diperlukan. Misalnya, Anda dapat memangkas
penggunaan memori yang tidak perlu dari
ekspresi, penelusuran, cache tampilan, atau ekstensi yang dapat dibuka untuk mengurangi frekuensi
aplikasi Anda mengalami error atau ANR karena memori yang rendah.
Penjadwalan tugas
Penjadwalan serentak dapat menyebabkan beberapa operasi yang perlu banyak memori agar berjalan
secara paralel, sehingga menyebabkan persaingan resource yang melebihi penggunaan
memori puncak aplikasi. Coba alokasikan resource secara tepat dengan memisahkan proses
ke dalam tugas-tugas berlatensi rendah dan perlu banyak CPU di
kumpulan thread yang tepat, agar dijalankan di perangkat yang mungkin
mengalami berbagai batasan resource.
Kebocoran memori
Berbagai alat, seperti
Memory Profiler di Android Studio dan
Perfetto tersedia
khusus untuk membantu menemukan dan mengurangi kebocoran memori dalam aplikasi Anda.
Sangat disarankan untuk menggunakan alat ini guna mengidentifikasi dan memperbaiki potensi
masalah memori agar komponen aplikasi Anda yang lain dapat berjalan tanpa tambahan
tekanan pada sistem.
Tips lainnya
- Drawable atau gambar besar menggunakan lebih banyak memori dalam aplikasi. Identifikasi dan optimalkan
bitmap besar atau berwarna penuh untuk mengurangi penggunaan memori.
- Coba pilih opsi lain untuk GIF di aplikasi saat membuat build untuk Android
(edisi Go) karena GIF menggunakan banyak memori.
- Anda dapat mengurangi ukuran file PNG tanpa menurunkan kualitas gambar menggunakan alat seperti
WebP, pngcrush, dan pngquant. Semua alat ini
dapat mengurangi ukuran file PNG, tetapi tetap mempertahankan ketajaman kualitas gambar.
- Alat aapt dapat mengoptimalkan aset gambar yang ditempatkan di
res/drawable/
dengan kompresi lossless selama proses build. Misalnya, alat aapt dapat
mengonversi PNG warna asli yang tidak memerlukan lebih dari 256 warna menjadi
PNG 8-bit dengan palet warna. Tindakan tersebut akan menghasilkan gambar dengan kualitas yang sama
tetapi dengan jejak memori yang lebih kecil.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[null,null,["Terakhir diperbarui pada 2025-07-27 UTC."],[],[],null,["# Optimize app memory\n\nMemory is a valuable resource in any software development environment, but it's\neven more valuable on a mobile operating system where physical memory is often\nconstrained. This is especially true for natively low-memory devices found\ncommonly with Android (Go edition). There are a few ways to help optimize memory\nin your app to help it run smoothly in these environments.\n\nBest practices\n--------------\n\n### Release cache memory\n\nThere may not be enough memory to keep background processes running as you\nwould in a typical environment. In this case, you can use\n[`onTrimMemory()`](/reference/android/content/ComponentCallbacks2#onTrimMemory(int))\nto trim unneeded memory from your app's process. To best\nidentify the current trim level for your app, use\n[`ActivityManager.getMyMemoryState(RunningAppProcessInfo)`](/reference/android/app/ActivityManager#getMyMemoryState(android.app.ActivityManager.RunningAppProcessInfo))\nand optimize or trim any unnecessary resources. For example, you can trim\nunnecessary memory usage from\nexpressions, search, view cache, or openable extensions to reduce the number of\ntimes your app experiences crashes or ANRs due to low memory.\n\n### Task scheduling\n\nConcurrent scheduling can lead to multiple memory intensive operations to run\nin parallel, leading to competition for resources exceeding the peak memory\nusage of an app. Try to appropriately allocate resources by separating processes\ninto CPU intensive, low latency tasks in the right\n[thread pool](/guide/background/threading) to run on devices that may face\nvarious resource constraints.\n\n### Memory leaks\n\nVarious tools, such as\n[Memory Profiler](/studio/profile/memory-profiler) in Android Studio and\n[Perfetto](https://perfetto.dev/docs/case-studies/memory) are\nspecifically available to help find and reduce memory leaks within your app.\nIt's highly encouraged that you use these tools to identify and fix potential\nmemory issues to allow other components of your app to run without additional\npressure on the system.\n\n### Other tips\n\n- Large images or drawables consume more memory in apps. Identify and optimize large or full-colored bitmaps to reduce memory usage.\n- Try to choose other options for GIFs in your app when building for Android (Go edition) as GIFs consume a lot of memory.\n- You can reduce PNG file sizes without losing image quality using tools like [WebP](/studio/write/convert-webp), pngcrush, and pngquant. All of these tools can reduce PNG file size while preserving the perceptive image quality.\n- The aapt tool can optimize the image resources placed in `res/drawable/` with lossless compression during the build process. For example, the aapt tool can convert a true-color PNG that does not require more than 256 colors to an 8-bit PNG with a color palette. Doing so results in an image of equal quality but a smaller memory footprint."]]