Otimizar a memória do app
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
A memória é um recurso valioso em qualquer ambiente de desenvolvimento de software, mas
é ainda mais importante em um sistema operacional móvel em que a memória física costuma ser
restrita. Isso vale principalmente para dispositivos nativos com pouca memória, que
são, com frequência, Android (versão Go). Existem algumas maneiras de otimizar a memória
do app para que ele seja executado sem problemas nesses ambientes.
Práticas recomendadas
Liberar memória em cache
Talvez você não tenha memória suficiente para manter os processos em segundo plano como
faria em um ambiente comum. Nesse caso, use
onTrimMemory()
para remover o que é desnecessário do processo do app. Para identificar
melhor o nível de remoção necessário, use
ActivityManager.getMyMemoryState(RunningAppProcessInfo)
e otimize ou elimine recursos desnecessários. Por exemplo, você pode diminuir
o uso da memória em
expressões, pesquisas, cache de visualização ou extensões abertas para reduzir o número de
vezes que o app apresenta falhas ou ANRs devido à pouca memória.
Agendamento de tarefas
O agendamento de tarefas simultâneas pode fazer com que várias operações com alto consumo de memória sejam executadas
em paralelo, levando à concorrência por recursos que excedem o pico de uso da memória
de um app. Aloque recursos da forma correta, separando processos
entre tarefas intensivas de CPU e de baixa latência no pool de linhas de execução
adequado para executar em dispositivos que enfrentam
várias restrições de recursos.
Vazamentos de memória
Várias ferramentas, como o
Memory Profiler no Android Studio e o
Perfetto (link em inglês) estão
disponíveis especificamente para encontrar e reduzir vazamentos de memória no seu app.
Recomendamos que você use essas ferramentas para identificar e corrigir
possíveis problemas de memória que permitam que outros componentes do app sejam executados sem
colocar mais pressão no sistema.
Outras dicas
- Imagens ou drawables grandes consomem mais memória em apps. Identifique e otimize
bitmaps grandes ou coloridos para reduzir o uso da memória.
- Evite usar GIFs ao criar apps Android
(versão Go), já que eles consomem muita memória.
- É possível reduzir o tamanho dos arquivos PNG sem perder a qualidade da imagem usando ferramentas como
WebP, pngcrush e pngquant. Todas essas ferramentas podem
reduzir o tamanho do arquivo PNG e preservar a qualidade perceptiva da imagem.
- A ferramenta aapt pode otimizar os recursos de imagem colocados em
res/drawable/
com compactação sem perdas durante o processo de compilação. Por exemplo, a ferramenta aapt pode
converter um PNG de cores verdadeiras que não exige mais de 256 cores em um
PNG de 8 bits com uma paleta de cores. Assim, a imagem continua com a mesma qualidade,
mas consome menos memória.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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."]]