Ottimizza la memoria dell'app
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
La memoria è una risorsa preziosa in qualsiasi ambiente di sviluppo software, ma è ancora più preziosa nei sistemi operativi mobile in cui la memoria fisica è spesso limitata. Questo vale in particolar modo per i dispositivi con memoria bassa in modo nativo che si trovano generalmente su Android Go. Esistono vari modi per ottimizzare la memoria
dell'app per garantirne il funzionamento in questi ambienti.
Best practice
Rilascia memoria cache
La memoria potrebbe non essere sufficiente per mantenere i processi in background in esecuzione come in un ambiente tipico. In questo caso, puoi utilizzare onTrimMemory()
per eliminare la memoria non necessaria dal processo dell'app. Per identificare
al meglio l'attuale livello di allestimento per la tua app, utilizza
ActivityManager.getMyMemoryState(RunningAppProcessInfo)
e ottimizza o taglia le risorse non necessarie. Ad esempio, puoi ridurre l'utilizzo non necessario della memoria da parte di espressioni, ricerche, visualizzazione della cache o estensioni apribili per ridurre il numero di volte in cui la tua app riscontra arresti anomali o ANR a causa della memoria insufficiente.
Pianificazione delle attività
La pianificazione simultanea può portare a più operazioni che richiedono molta memoria da eseguire in parallelo, portando alla concorrenza per risorse che superano il picco di utilizzo della memoria di un'app. Prova ad allocare le risorse in modo appropriato separando i processi in attività a bassa latenza e ad alta intensità di CPU nel pool di thread corretto da eseguire su dispositivi che potrebbero dover affrontare vari vincoli delle risorse.
Perdita di memoria
Vari strumenti, come Memory Profiler in Android Studio e Perfetto, sono disponibili specificamente per trovare e ridurre le perdite di memoria all'interno della tua app. Ti consigliamo vivamente di utilizzare questi strumenti per identificare e risolvere potenziali problemi di memoria, in modo da consentire l'esecuzione di altri componenti dell'app senza ulteriore pressione sul sistema.
Altri suggerimenti
- Le immagini di grandi dimensioni o i disegnabili consumano più memoria nelle app. Identifica e ottimizza
le bitmap grandi o a colori per ridurre l'utilizzo di memoria.
- Prova a scegliere altre opzioni per le GIF nella tua app quando crei per Android Go, poiché le GIF consumano molta memoria.
- Puoi ridurre le dimensioni dei file PNG senza perdere la qualità dell'immagine utilizzando strumenti come WebP, pngcrush e pngquant. Tutti questi strumenti
possono ridurre le dimensioni del file PNG mantenendo la qualità percepita dell'immagine.
- Lo strumento aapt può ottimizzare le risorse immagine inserite in
res/drawable/
con compressione senza perdita di dati durante il processo di compilazione. Ad esempio, lo strumento aapt può convertire un file PNG a colori reali che non richiede più di 256 colori in un PNG a 8 bit con una tavolozza dei colori. In questo modo l'immagine sarà di pari qualità,
ma con un ingombro di memoria ridotto.
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,["# 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."]]