¿Cuáles son las ventajas de establecer largeHeap en true?

Tengo una aplicación con casi 50 clases. Estoy configurando android:largeHeap="true" , como se puede ver a continuación. ¿Es esta una buena practica?

   

Amablemente sugiera ventajas y desventajas para usarlo.

Estoy recibiendo problemas de memoria por eso hago esta pregunta.

Demasiado tarde para la fiesta aquí, pero ofreceré mi 0.02 $ de todos modos.
No es una buena idea usar android:largeHeap="true" aquí está el extracto de google que lo explica,

Sin embargo, la posibilidad de solicitar un montón grande está pensada solo para un pequeño conjunto de aplicaciones que pueden justificar la necesidad de consumir más RAM (como una gran aplicación de edición de fotos). Nunca solicite un gran montón simplemente porque se ha quedado sin memoria y necesita una solución rápida; debe usarlo solo cuando sepa exactamente dónde se está asignando toda su memoria y por qué debe conservarse. Sin embargo, incluso cuando está seguro de que su aplicación puede justificar el gran montón, debe evitar solicitarlo en la medida de lo posible. Usar la memoria extra será cada vez más en detrimento de la experiencia general del usuario porque la recolección de basura tomará más tiempo y el rendimiento del sistema puede ser más lento cuando se cambia de tarea o se realizan otras operaciones comunes.

aquí está el enlace completo de la documentación https://developer.android.com/training/articles/memory.html

ACTUALIZAR

Después de trabajar de forma inexplicable con out of memory errors , diría que agregar esto al manifiesto para evitar el problema no es un pecado, también como señala @Milad a continuación, no afecta el funcionamiento normal de la aplicación

ACTUALIZACIÓN 2

Aquí hay algunos consejos para lidiar con out of memory errors falta out of memory errors

1) Usa estas retrollamadas que android da onLowMemory , onTrimMemory(int) y borra la caché de imágenes como (picasso, glide, fresco …) puedes leer más sobre ellas aquí y aquí
2) comprime tus archivos (imágenes, pdf)
3) lea sobre cómo manejar bitmap de manera más eficiente aquí
4) Use pelusa regularmente antes de que la producción empuje para asegurarse de que el código sea elegante y no voluminoso.

Creo que esta es una pregunta muy efectiva, y permítanme agregar algunos detalles sobre las ventajas y desventajas de usar esta opción.

Lo que obtienes :

  • Obviamente, obtienes un montón más grande, lo que significa una disminución del riesgo de OutOfMemoryError .

Lo que pierdes:

  • Puede perder algunos marcos, lo que puede causar un enganche visible . Un montón más grande hace que las recolecciones de basura tarden más. Porque el recolector de basura básicamente tiene que atravesar todo tu conjunto de objetos en vivo. Por lo general, el tiempo de pausa de recolección de basura es de aproximadamente 5 ms, y puede pensar que pocos milisegundos no son un gran problema. Pero cada milisegundo cuenta. El dispositivo Android tiene que actualizar su pantalla cada 16 ms y un tiempo de GC más largo puede llevar el tiempo de procesamiento de su fotogtwig a una barrera de 16 milisegundos, lo que puede provocar un enganche visible.

  • También el cambio de aplicaciones será más lento . El sistema Android puede matar procesos en el caché LRU comenzando con el proceso utilizado menos recientemente, pero también dando cierta consideración hacia los procesos que consumen más memoria. Por lo tanto, si usa un montón más grande, es más probable que su proceso se mate cuando está en segundo plano, lo que significa que puede llevar más tiempo cuando los usuarios desean cambiar de otras aplicaciones a la suya. También es más probable que se descarten otros procesos de fondo cuando su proceso esté en primer plano, ya que su aplicación requiere una memoria más grande. Significa que cambiar de tu aplicación a otras aplicaciones también lleva más tiempo.

Conclusión

Evite usar la opción de gran largeHeap tanto como sea posible. Puede costar una disminución en el rendimiento difícil de detectar y una mala experiencia del usuario.

En realidad, Android: largeHeap es el instrumento para boost la memoria asignada a la aplicación.

No hay una definición clara de la necesidad de usar esta bandera. Si necesita más memoria, Android le proporciona una herramienta para boostla. Pero la necesidad de usar, te defines a ti mismo.

Tengo una aplicación con casi 50 clases

No creo que esto cause muchos problemas. La razón por la que tienes el error de OutOfMemory suele cargarse en muchas imágenes de la aplicación o algo así. Si no está contento de usar un montón grande, debe encontrar una manera de optimizar el uso de la memoria.

También puede usar Bibliotecas de carga de imágenes como Picasso , UIL o Glide . Todos ellos tienen la función de almacenamiento en caché de imágenes en la memoria y / o en el disco.

Si los procesos de su aplicación se deben crear con un gran montón de Dalvik. Esto se aplica a todos los procesos creados para la aplicación. Solo se aplica a la primera aplicación cargada en un proceso; si está usando una identificación de usuario compartida para permitir que varias aplicaciones utilicen un proceso, todas deben usar esta opción de manera consistente o tendrán resultados imprevisibles.

La mayoría de las aplicaciones no deberían necesitar esto y deberían enfocarse en reducir el uso general de memoria para un mejor rendimiento. Habilitar esto tampoco garantiza un aumento fijo en la memoria disponible, porque algunos dispositivos están limitados por su memoria total disponible.

sí, esta es una buena práctica para poner android:largeHeap="true" porque Android te brinda una herramienta para boost tu memoria asignada cuando sea necesario.

Puede obtener más información desde este enlace: https://developer.android.com/topic/performance/memory