Android Studio致命异常:java.lang.OutOfMemoryError:无法分配内存

时间:2016-02-22 20:39:43

标签: java android xml android-studio imagebutton

我正在尝试创建一个带有显示两个ImageButton的片段的应用。这些代码通过xml加载图像:

<ImageButton
...
        android:id="@+id/image_button_lab"
        android:background="@drawable/lab"
.../>

<ImageButton
...
        android:id="@+id/image_button_wild"
        android:background="@drawable/wild"
.../>

第一个是实验室的照片,另一个是老虎的照片。这两张照片都是1080 x 1080平方.jpeg图片。

当我运行应用程序并启动此片段时,我收到以下错误(缩短了)

E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.example.umutberk.test,PID: 2959
java.lang.OutOfMemoryError: Failed to allocate a 41990412 byte allocation with 4194304 
free bytes and 22MB until OOM

我尝试过添加;

dexOptions 
    {
        incremental true
        javaMaxHeapSize "4g"
    }

...到build.gradle文件中的android {...}段。

还尝试将VD RAM大小增加到4GB,创建一个具有4GB RAM分配的新VD,同时在我的LG G4上运行APK,无论如何都会崩溃。

查看&#34;有效加载大位图&#34;官方Android Studio文档和moethod中的教程并不是我想要做的。我只是想加载&#34; @drawable /&#34;作为我的ImageButtons的背景。任何帮助将不胜感激!

(PS:当我改变&#34; @ drawable / image&#34; to#34; #ffffff&#34;对于android:background。它确实有用这两个图像。)

此处还有完整的错误消息:http://pastebin.com/ZiegMfpB

1 个答案:

答案 0 :(得分:1)

问题不在于这些特定的分配。这个尺寸的2张图像是半合理的(因为2张图片大不会同时放在屏幕上,所以为什么不根据需要一次加载一张)。问题是你所有的分配都太多了。寻找您不需要保留的泄漏或记忆 - 尤其是位图。我会使用堆转储来查看是否有太多的对象。

此外,将RAM增加到4GB也行不通 - 整个设备没有4GB。这些是手机,而不是电脑(地狱电脑4年前还没有电脑)。