简体   繁体   中英

fixing byte outofMemory Android

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM