Android Studio не хватает памяти Ошибка при запуске приложения - PullRequest
0 голосов
/ 01 сентября 2018

Когда я запускаю свое приложение на физическом устройстве Каждый раз, когда приложение вылетает. LogCat отображает «Недостаточно памяти и не удалось выделить 74649612 байтов для выделения 16768392 свободных байтов и 49 МБ до OOM»

Я использую устройство Xiaomi RedMi note 4 3 ГБ ОЗУ Android версия 7.0 Процессор Qualcomm Snapdragon 625

Вот сообщение LogCat

java.lang.OutOfMemoryError: Failed to allocate a 74649612 byte allocation with 16768392 free bytes and 49MB until OOM
    at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
    at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:624)
    at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:457)
    at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1152)
    at android.content.res.ResourcesImpl.createFromResourceStream(ResourcesImpl.java:1272)
    at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:743)
    at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:585)
    at android.content.res.MiuiResourcesImpl.loadDrawable(MiuiResourcesImpl.java:308)
    at android.content.res.Resources.getDrawable(Resources.java:785)
    at android.content.res.Resources.getDrawable(Resources.java:756)
    at com.suman.udit.su.MainActivity.onCreate(MainActivity.java:52)
    at android.app.Activity.performCreate(Activity.java:6852)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2700)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2808)
    at android.app.ActivityThread.-wrap12(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1541)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:165)
    at android.app.ActivityThread.main(ActivityThread.java:6365)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:883)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

OutOfMemoryError - наиболее распространенная проблема, возникающая в Android, особенно при работе с растровыми изображениями. Эта ошибка генерируется виртуальной машиной Java (JVM), когда объект не может быть выделен из-за недостатка места в памяти, а также сборщик мусора не может освободить некоторое пространство.

Как упомянул Алексей, вы можете добавить нижеприведенные объекты в файл манифеста android:hardwareAccelerated="false", android:largeHeap="true", это будет работать для некоторых сред.

<application
    android:allowBackup="true"
    android:hardwareAccelerated="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

Вы должны обязательно прочитать некоторые из концепций разработчика Android, особенно здесь: Эффективное отображение растровых изображений

Прочитайте все 5 тем и перепишите свой код еще раз. Если это все еще не работает, мы будем рады видеть, что вы сделали неправильно с учебным материалом.

Вот некоторые из возможных ответов для ошибок такого типа в SOF

Android: BitmapFactory.decodeStream () не хватает памяти с файлом 400 КБ с 2 МБ свободной кучи

Как решить проблему с java.lang.OutOfMemoryError в Android

Android: java.lang.OutOfMemoryError

java.lang.OutOfMemoryError

Решение для OutOfMemoryError: размер растрового изображения превышает бюджет виртуальной машины

0 голосов
/ 01 сентября 2018

Похоже, Drawable (возможно, картинка?), Который вы пытаетесь загрузить в MainActivity.java:52, слишком велик. Вы также можете попробовать поместить его в папку drawable-nodpi, чтобы система не пыталась масштабировать его при загрузке.

...