Cómo optimizar la memoria de la app
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
La memoria es un recurso valioso en cualquier entorno de desarrollo de software, pero es aún más valiosa en un sistema operativo móvil donde la memoria física suele tener restricciones. Esto es especialmente cierto para los dispositivos con poca memoria nativa que, en general, ejecutan Android (edición Go). Existen varias formas de optimizar la memoria de tu app a fin de que se ejecute sin problemas en estos entornos.
Prácticas recomendadas
Libera memoria caché
Es posible que no haya suficiente memoria para mantener en ejecución los procesos en segundo plano tal y como sucedería en un entorno típico. En este caso, puedes usar la función onTrimMemory()
para cortar la memoria innecesaria del proceso de tu app. A fin de identificar mejor el nivel de recorte actual de tu app, usa el elemento ActivityManager.getMyMemoryState(RunningAppProcessInfo)
y optimiza o corta los recursos innecesarios. Por ejemplo, puedes cortar el uso innecesario de memoria de las expresiones, búsquedas, vistas de caché o extensiones que se pueden abrir a los efectos de reducir la cantidad de veces que tu app experimenta fallas o errores de ANR debido a la poca memoria.
Programación de tareas
La programación simultánea puede hacer que varias operaciones con uso intensivo de memoria se ejecuten en paralelo, lo que genera competencia por los recursos que exceden el uso máximo de memoria de una app. Para asignar los recursos de forma adecuada, separa los procesos en tareas intensivas de CPU de baja latencia en el grupo de subprocesos correcto a fin de ejecutarlos en dispositivos que puedan enfrentar varias restricciones de recursos.
Fugas de memoria
Varias herramientas, como el Generador de perfiles de memoria en Android Studio y Perfetto están específicamente disponibles para ayudar a encontrar y reducir las fugas de memoria dentro de la app. Te recomendamos que uses estas herramientas para identificar y solucionar posibles problemas de memoria a fin de permitir que otros componentes de la app se ejecuten sin problemas adicionales en el sistema.
Otras sugerencias
- Las imágenes o los elementos de diseño grandes consumen más memoria en las apps. Identifica y optimiza mapas de bits grandes o que sean a todo color a fin de reducir el uso de memoria.
- Cuando crees contenido para Android (edición Go), intenta elegir otras opciones distintas a los elementos GIF, ya que estos consumen mucha memoria.
- Puedes reducir el tamaño de un archivo PNG sin perder la calidad de la imagen mediante herramientas como WebP, pngcrush y pngquant. Todas estas reducen el tamaño del archivo y, a la vez, preservan la calidad perceptiva de la imagen.
- Con la herramienta aapt, se pueden optimizar los recursos de imagen que se encuentran en
res/drawable/
mediante una compresión sin pérdidas durante el proceso de compilación. Por ejemplo, la herramienta aapt puede convertir un archivo PNG con color verdadero en el que no se necesitan más de 256 colores en un PNG de 8 bits con una paleta de colores. De este modo, la imagen tiene la misma calidad, pero el uso de memoria es menor.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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."]]