java - 修复 Android 内存不足问题

标签 java android exception memory

我正在尝试修复我的应用程序中的内存不足问题,其功能如下:

   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/

相关文章:

java - 异步任务: Two values to AsyncTask and process in doInBackground

android - Android NullPointerException处理

python - 在 Python 的调用代码中捕获 __enter__ 中的异常

android - 用户属性不可用于通知

facebook - 移动网站 Facebook 登录 使用 Facebook 应用程序获取登录详细信息

android - 为 Android 构建应用程序时任务 ':mergeF0F1F2F3DebugResources' 执行失败

java.lang.InternalError : Location with invalid code index. .. 什么?

java - "ResultSet is from UPDATE: No Data"从 Java 应用程序收到

java - 变量在 Java 中不变

java - 如何应对交互式 Linux 命令?