一行中的数据太大 - 如何限制?

时间:2012-01-08 04:49:41

标签: java android json out-of-memory

标题有点含糊不清,但我的意思是:

InputStream is = connection.getInputStream();
      BufferedReader rd = new BufferedReader(new InputStreamReader(is));

      String line;
      JSONArray ja = new JSONArray();

      while((line = rd.readLine()) != null) {

          ja = new JSONArray(line);
      }
      rd.close();
      return ja;

    } 

如果rd.readLine()返回大量数据,我该如何拆分或限制它?我得到了一个错误的错误。

3 个答案:

答案 0 :(得分:2)

我建议在Android上使用Jackson JSON库进行JSON解析。它是最快的,并且最有可能处理其代码中内置的大量JSON。

http://jackson.codehaus.org/

答案 1 :(得分:1)

您是否尝试过增加java堆大小(-Xmx)?默认值可能非常小。

答案 2 :(得分:1)

我看到两个选项 1)将其作为App的一部分存储,方法是将其添加到assests中 2)重新设计您的数据。大多数情况下,您在此单个调用中检索的数据在该特定时间可能没有用。我建议根据需要拆分数据检索。由于Dalvik VM你没有增加堆大小的选项,所以你必须考虑这些OutofMemoryError中出现的替代方案。