Registra allocazioni native
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Se stai scrivendo codice nativo e hai dubbi sul suo utilizzo della memoria, è utile eseguire il profiling delle allocazioni native della tua app per scoprire se è possibile ottimizzare.
Perché dovresti eseguire il profiling della memoria dell'app
Android fornisce un ambiente di memoria gestita: quando Android stabilisce che la tua app non utilizza più alcuni oggetti, il garbage collector restituisce la memoria inutilizzata all'heap. Il modo in cui Android trova la memoria inutilizzata è in costante miglioramento, ma a un certo punto su tutte le versioni di Android il sistema deve mettere in pausa brevemente il codice. La maggior parte delle volte, le interruzioni sono impercettibili.
Tuttavia, se l'app alloca la memoria più velocemente di quanto il sistema possa raccoglierla,
l'app potrebbe subire un ritardo mentre il raccoglitore libera memoria sufficiente per soddisfare
le tue allocazioni. Il ritardo potrebbe causare l'interruzione dei frame dell'app e una lentezza visibile.
Per informazioni sulle pratiche di programmazione che possono ridurre l'utilizzo della memoria dell'app, leggi l'articolo Gestire la memoria dell'app.
Panoramica delle allocazioni native
Quando esegui l'attività Monitora il consumo di memoria (allocazioni native),
Android Studio Profiler monitora le allocazioni e le dealoazioni di oggetti in
codice nativo per il periodo di tempo specificato e fornisce le seguenti
informazioni:
- Allocazioni: un conteggio degli oggetti allocati utilizzando
malloc()
o l'operatore new
durante il periodo di tempo selezionato.
- Deallocations: un conteggio degli oggetti deallocati utilizzando
free()
o l'operatore
delete
durante il periodo di tempo selezionato.
- Dimensioni allocazioni: le dimensioni aggregate in byte di tutte le allocazioni durante il periodo di tempo selezionato.
- Dimensioni deallocations: le dimensioni aggregate in byte di tutta la memoria liberata
durante il periodo di tempo selezionato.
- Conteggio totale: il valore nella colonna Allocazioni meno il valore nella colonna Deallocations.
- Dimensione rimanente: il valore nella colonna Dimensione allocazioni meno il valore nella colonna Dimensione deallocations.

La scheda Visualizzazione mostra una visualizzazione aggregata di tutti gli oggetti correlati al codice nativo nello stack di chiamate durante l'intervallo di tempo selezionato. In sostanza,
viene indicata la quantità di memoria totale utilizzata dallo stack chiamate con le istanze mostrate.
La prima riga mostra il nome del thread. Per impostazione predefinita, gli oggetti vengono impilati da sinistra a destra in base alle dimensioni dell'allocazione. Utilizza il menu a discesa per modificare l'ordinamento.

Per impostazione predefinita, il profiler utilizza una dimensione del campione di 2048 byte: ogni volta che vengono allocati 2048 byte di memoria, viene acquisito uno snapshot della memoria. Una dimensione del campione inferiore consente di ottenere snapshot più frequenti, che generano dati più accurati sull'utilizzo della memoria. Un campione più grande genera dati meno accurati, ma consuma meno risorse di sistema e migliora le prestazioni durante la registrazione. Per modificare la dimensione del campione, consulta Modificare la configurazione della registrazione.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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)."]]