gpt4 book ai didi

java - 由于 For 循环中的堆内存而导致内存不足?

转载 作者:行者123 更新时间:2023-12-01 15:12:29 26 4
gpt4 key购买 nike

最近,我声明了一个函数,并将该函数放入 for 循环中,如下所示:

 Bitmap image = ...//Do stuff to get image's bitmap, it's quite ok
for(int i =0; i < someNumber; i++){
image = doSomeThing(image, width, height);
}

private Bitmap doSomeThing(image, width, height){
int[] a = new int[10000];
Bitmap bitmap = image.copy(sentBitmap.getConfig(), true);
// Do some stuff here to process image
...
return (bitmap);
}

for循环参数someNumber小于5时,我的应用程序很好,否则,我将outOfMemory。所以我想请求解决这个异常的建议!我可以使用 System.gc() 吗?或者我可以在每次 for 循环后删除未使用的内存吗?

已编辑:抱歉,也许我遗漏了太多,我更新了代码!

Edited2 :如果我使用 call image = doSomething(...) 多次而不是 for 循环,则 异常(exception)不再存在!

谢谢!

最佳答案

当您在 for 循环中完成后,您可能需要调用 image.recycle()

编辑:啊,我明白你想要做什么,对同一张图像应用多个滤镜。试试这个:

 Bitmap image = ...;
for(int i =0; i < someNumber; i++){
Bitmap newImage = doSomeThing(image, width, height);
image.recycle();
image = newImage;
}

关于java - 由于 For 循环中的堆内存而导致内存不足?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12145256/

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