Merekam alokasi native
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Jika Anda menulis kode native dan khawatir dengan penggunaan memorinya, sebaiknya
buat profil alokasi native aplikasi Anda untuk mengetahui apakah ada peluang untuk
mengoptimalkannya.
Alasan Anda harus membuat profil memori aplikasi
Android menyediakan lingkungan memori
terkelola—saat Android menentukan bahwa
aplikasi Anda tidak lagi menggunakan beberapa objek, pembersih sampah memori akan melepas
memori yang tidak terpakai kembali ke heap. Cara Android melakukan pencarian
memori yang tidak terpakai akan terus ditingkatkan, tetapi pada beberapa titik dalam semua versi Android, sistem harus menjeda kode Anda sesaat. Umumnya, jeda itu tidak akan terasa.
Namun, jika aplikasi mengalokasikan memori lebih cepat dari waktu sistem mengumpulkannya,
aplikasi mungkin akan tertunda saat pembersih membebaskan memori dalam jumlah yang cukup untuk memenuhi
alokasi Anda. Penundaan ini dapat menyebabkan aplikasi melewati beberapa frame dan menyebabkan
kelambatan yang cukup terlihat.
Untuk mengetahui informasi tentang praktik pemrograman yang dapat mengurangi penggunaan memori
aplikasi, baca Mengelola memori aplikasi Anda.
Ringkasan alokasi native
Saat Anda menjalankan tugas Track Memory Consumption (Native Allocations),
Android Studio Profiler melacak alokasi dan dealokasi objek dalam
kode native selama jangka waktu yang Anda tentukan dan memberikan informasi
berikut:
- Allocations: Jumlah objek yang dialokasikan menggunakan operator
malloc()
atau new
selama jangka waktu yang dipilih.
- Deallocations: Jumlah objek yang dibatalkan alokasinya menggunakan operator
free()
atau
delete
selama jangka waktu yang dipilih.
- Ukuran Alokasi: Ukuran gabungan dalam byte dari semua alokasi selama
jangka waktu yang dipilih.
- Deallocations Size: Ukuran gabungan dalam byte dari semua memori yang dibebaskan
selama jangka waktu yang dipilih.
- Total Count: Nilai di kolom Allocations dikurangi nilai di
kolom Deallocations.
- Ukuran Tersisa: Nilai di kolom Ukuran Alokasi dikurangi
nilai di kolom Ukuran Dealokasi.

Tab Visualisasi menampilkan tampilan gabungan dari semua objek yang terkait dengan
kode native dalam stack panggilan selama rentang waktu yang dipilih. Ini pada dasarnya
menunjukkan jumlah total memori yang digunakan callstack dengan instance yang ditampilkan.
Baris pertama menampilkan nama rangkaian pesan. Secara default, objek ditumpuk dari kiri ke
kanan berdasarkan ukuran alokasi; gunakan drop-down untuk mengubah pengurutan.

Secara default, profiler menggunakan ukuran sampel 2048 byte: Setiap kali 2048 byte
memori dialokasikan, snapshot memori diambil. Ukuran sampel yang lebih kecil
akan menghasilkan snapshot yang lebih sering, sehingga menghasilkan data penggunaan
memori yang lebih akurat. Ukuran sampel yang lebih besar menghasilkan data yang kurang akurat, tetapi menggunakan lebih sedikit
resource sistem dan meningkatkan performa saat merekam. Untuk mengubah ukuran
sampel, lihat Mengedit konfigurasi perekaman.
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.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-07-27 UTC."],[],[],null,["# Record native allocations\n\nIf you're writing native code and concerned about its memory usage, it's helpful\nto profile your app's native allocations to discover if there's opportunity to\noptimize.\n\nWhy you should profile your app memory\n--------------------------------------\n\nAndroid provides a [managed memory\nenvironment](/topic/performance/memory-overview)---when Android determines that\nyour app is no longer using some objects, the garbage collector releases the\nunused memory back to the heap. How Android goes about finding unused memory is\nconstantly being improved, but at some point on all Android versions, the system\nmust briefly pause your code. Most of the time, the pauses are imperceivable.\nHowever, if your app allocates memory faster than the system can collect it,\nyour app might be delayed while the collector frees enough memory to satisfy\nyour allocations. The delay could cause your app to skip frames and cause\nvisible slowness.\n\nFor information about programming practices that can reduce your app's memory\nuse, read [Manage your app's memory](/topic/performance/memory).\n\nNative allocations overview\n---------------------------\n\nWhen you run the [**Track Memory Consumption (Native Allocations)**](/studio/profile#start-profiling) task,\nthe Android Studio Profiler tracks allocations and deallocations of objects in\nnative code for the time period that you specify and provides the following\ninformation:\n\n- **Allocations** : A count of objects allocated using `malloc()` or the `new` operator during the selected time period.\n- **Deallocations** : A count of objects deallocated using `free()` or the `delete` operator during the selected time period.\n- **Allocations Size**: The aggregated size in bytes of all allocations during the selected time period.\n- **Deallocations Size**: The aggregated size in bytes of all freed memory during the selected time period.\n- **Total Count** : The value in the **Allocations** column minus the value in the **Deallocations** column.\n- **Remaining Size** : The value in the **Allocations Size** column minus the value in the **Deallocations Size** column.\n\nThe **Visualization** tab shows an aggregated view of all the objects related to\nnative code in the call stack during the time range selected. It essentially\nshows you how much total memory the callstack with the instances shown takes.\nThe first row shows the thread name. By default, the objects are stacked left to\nright based on allocation size; use the drop-down to change the ordering.\n\nBy default, the profiler uses a sample size of 2048 bytes: Every time 2048 bytes\nof memory are allocated, a snapshot of memory is taken. A smaller sample size\nresults in more frequent snapshots, yielding more accurate data about memory\nusage. A larger sample size yields less accurate data, but it consumes fewer\nsystem resources and improves performance while recording. To change the sample\nsize, see [Edit the recording configuration](/studio/profile#edit-recording)."]]