我正在尝试修复我的应用程序中的内存不足问题,其功能如下:
public byte[] processByteArray (int bits) throws OutofMemoryError {
byte [] arr =new byte [bits];
//do something and
return arr;
}
我不确定用户为值位提供了什么,因此出现异常 Dalvik 说 536870812 字节分配超出了 67108864 字节最大堆大小。
所以,我做了这样的事情,这不好,但现在解决了问题:
在类中私有(private)声明 arr 并访问该函数内部,如下所示:
public byte[] processByteArray (int bits) throws OutofMemoryError {
if(bits<=67108864) {
byte [] arr =new byte [bits]; //tell me if this is right..!
}
//do something and
return arr;
}
我不知道我还能如何解决这个问题,我想知道我的函数中可以接受的最大限制字节[] arr,我的意思是我想知道新字节[位]中的参数“位”限制; 。请教育我..任何建议将不胜感激。谢谢。
最佳答案
您应该使用getMemoryClass()
来找到极限,而不是分配一个魔数(Magic Number)。
关于java - 修复 Android 内存不足问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11550316/