I am trying to fix outofMemory in my application that has a function as follows:
public byte[] processByteArray (int bits) throws OutofMemoryError {
byte [] arr =new byte [bits];
//do something and
return arr;
}
I am not sure about what user provides for value bits and hence get exception Dalvik saying 536870812 byte allocation exceeds the 67108864 byte maximum heap size.
So, I did something like this which is not good, but for now fixes issue:
declare arr privately in the class and access that inside function like this :
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;
}
I am not sure how else I can fix this issue, I want to know the max limit byte [] arr can take in my function , I mean I want to know parameter- “bits” limit in new byte [bits];
. Please educate me.. Any suggestion would be appreciated. Thank you.
You should use
getMemoryClass()to get the find the limit, instead of assigning a magic number.