Meu aplicativo Android está usando o React Native 0.22.0, desenvolvido no Mac. Está tudo bem no desenvolvimento. Depois de liberar hoje, recebi relatórios de falhas do Crashlytics.
O relatório é
Fatal Exception: java.lang.OutOfMemoryError: Failed to allocate a 23103292 byte allocation with 13011316 free bytes and 12MB until OOM
at dalvik.system.VMRuntime.newNonMovableArray(VMRuntime.java)
at android.graphics.Bitmap.nativeCreate(Bitmap.java)
at android.graphics.Bitmap.createBitmap(Bitmap.java:942)
at android.graphics.Bitmap.createBitmap(Bitmap.java:913)
at android.graphics.Bitmap.createBitmap(Bitmap.java:880)
at com.facebook.imagepipeline.memory.BitmapPool.alloc(BitmapPool.java:55)
at com.facebook.imagepipeline.memory.BitmapPool.alloc(BitmapPool.java:30)
at com.facebook.imagepipeline.memory.BasePool.get(BasePool.java:259)
at com.facebook.imagepipeline.platform.ArtDecoder.decodeStaticImageFromStream(ArtDecoder.java:137)
at com.facebook.imagepipeline.platform.ArtDecoder.decodeFromEncodedImage(ArtDecoder.java:81)
at com.facebook.imagepipeline.decoder.ImageDecoder.decodeStaticImage(ImageDecoder.java:127)
at com.facebook.imagepipeline.decoder.ImageDecoder.decodeImage(ImageDecoder.java:94)
at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder.doDecode(DecodeProducer.java:188)
at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder.access$200(DecodeProducer.java:96)
at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder$1.run(DecodeProducer.java:128)
at com.facebook.imagepipeline.producers.JobScheduler.doJob(JobScheduler.java:207)
at com.facebook.imagepipeline.producers.JobScheduler.access$000(JobScheduler.java:27)
at com.facebook.imagepipeline.producers.JobScheduler$1.run(JobScheduler.java:78)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:43)
at java.lang.Thread.run(Thread.java:818)
Cerca de 50% dos usuários enfrentam esse problema. Realmente precisa ser corrigido.
O dispositivo está ficando sem memória, no primeiro caso está tentando alocar 22mb para um bitmap onde há apenas 12mb disponíveis. Você sabe quanta memória seu aplicativo estava alocando até a falha? porque pode ser um problema de vazamento de memória
Não notei nada de alarmante nos aplicativos que implantei no Android na Play Store recentemente. Você poderia fornecer mais informações aqui? Acredito que este é um assunto para um perfil adequado para que possamos ter uma ideia do que está acontecendo aqui.
android/app/src/main/AndroidManifest.xml
<application
android:largeHeap="true"
Adicionando largeHeap parece corrigi-lo
Comentários muito úteis
android/app/src/main/AndroidManifest.xml
Adicionando largeHeap parece corrigi-lo