Android Studio Fatal Exception: java.lang.OutOfMemoryError: Failed to allocate memory
Android Studio Fatal Exception: java.lang.OutOfMemoryError: Failed to allocate memory
我正在尝试创建一个包含显示两个 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,无论如何它都会崩溃。
查看了官方 Android Studio 文档中的 "Loading Large Bitmaps Efficiently" 教程,其中的方法不是我想要做的。我只是想从“@drawable/”加载图像作为我的 ImageButtons 的背景。如有任何帮助,我们将不胜感激!
(PS:当我将 android:background 的“@drawable/image”更改为“#ffffff”时它起作用了。所以我确信它与这两张图片有关.)
这里还有完整的错误信息:http://pastebin.com/ZiegMfpB
问题不在于这些特定的分配。 2 张该尺寸的图片是半合理的(半合理是因为 2 张这么大的图片不能同时显示在屏幕上,所以为什么不根据需要一次加载一张)。问题是你所有的分配加起来太多了。寻找不需要保留的泄漏或内存 - 特别是位图。我会使用堆转储来查看是否有太多对象。
此外,将 RAM 增加到 4GB 也行不通 - 整个设备没有 4GB。这些是手机,不是电脑(该死的电脑在 4 年前还没有)。
我正在尝试创建一个包含显示两个 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,无论如何它都会崩溃。
查看了官方 Android Studio 文档中的 "Loading Large Bitmaps Efficiently" 教程,其中的方法不是我想要做的。我只是想从“@drawable/”加载图像作为我的 ImageButtons 的背景。如有任何帮助,我们将不胜感激!
(PS:当我将 android:background 的“@drawable/image”更改为“#ffffff”时它起作用了。所以我确信它与这两张图片有关.)
这里还有完整的错误信息:http://pastebin.com/ZiegMfpB
问题不在于这些特定的分配。 2 张该尺寸的图片是半合理的(半合理是因为 2 张这么大的图片不能同时显示在屏幕上,所以为什么不根据需要一次加载一张)。问题是你所有的分配加起来太多了。寻找不需要保留的泄漏或内存 - 特别是位图。我会使用堆转储来查看是否有太多对象。
此外,将 RAM 增加到 4GB 也行不通 - 整个设备没有 4GB。这些是手机,不是电脑(该死的电脑在 4 年前还没有)。