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.
您应该使用getMemoryClass()
获取查找限制,而不是分配幻数。
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.