gpt4 book ai didi

android - createBitmap 导致内存不足错误

转载 作者:搜寻专家 更新时间:2023-11-01 07:40:41 26 4
gpt4 key购买 nike

在我的应用程序中,我正在从它的颜色代码创建一个位图,如下所示:

int width=getImageWidth();
int height=getImageHeight();
int[] array=getbitmap();
int[] colorsAsIntegers = new int[width*height];
int i = 0;
int j = 0;

while (i<width*height*4) {
colorsAsIntegers[j] = Color.argb(array[i], array[i+1], array[i+2],
array[i+3]);
i += 4;
j++;
}

myBitmap=Bitmap.createBitmap(colorsAsIntegers,
width,
height,
Bitmap.Config.ARGB_8888);

而且我经常遇到内存不足的错误:(那么如何使用 BitmapFactory 优化来避免这个问题呢?因为我没有输入流或文件,所以我只有一个数组包含我的像素

谢谢

最佳答案

一些事情....

Android 在位图方面存在非常严重的问题。它们分配在非垃圾收集内存中。这很好。当收集拥有的位图时,它们确实会被垃圾收集。他们不做的是在压缩堆时重新定位。由于堆 fragment ,这可能会导致过早的内存不足错误。解决方案:在处理完位图后立即调用 Bitmap.recycle。这会释放非 gc 内存,并减少 fragment 问题。

您还可以通过创建一个空位图,然后从一个小缓冲区逐行复制像素来降低内存压力。 Java gc 也不是特别喜欢大数组(尽管大数组可以在 gc 期间重新定位)。性能损失很小,与过早垃圾收集造成的性能损失相比可以忽略不计。这样做会减少 49.99% 的内存使用量。

关于android - createBitmap 导致内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4106552/

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