gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 10:21:35 25 4
gpt4 key购买 nike

我正在尝试创建一个带有显示两个 ImageButtons 的 fragment 的应用程序。图像通过 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 图像。

当我运行应用程序并启动此 fragment 时,出现以下错误(缩短:)

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,但无论如何都会崩溃。

查看了官方 Android Studio 文档中的“高效加载大位图”教程和方法,这并不是我想要做的。我只是想从“@drawable/”加载图像作为我的图像按钮的背景。任何帮助将不胜感激!

(PS:当我将 android:background 的“@drawable/image”更改为“#ffffff”时,它会起作用。所以我确信它与这两个图像有关。)

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

最佳答案

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

此外,将 RAM 增加到 4GB 也行不通——整个设备没有 4GB。这些是手机,不是电脑(4 年前电脑还没有这样的东西)。

关于java - Android Studio致命异常: java. lang.OutOfMemoryError:无法分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35563370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com