Json Object提供OutOfMemory Exception

时间:2011-10-13 12:55:13

标签: android json

我正在使用JSON Framework从服务器更新客户端的数据。我有30个Pojo类,我收到了来自服务器的Http响应。我使用方法

创建了Reader的Object
InputStream instream = entity.getContent();
reader = new InputStreamReader(instream, "UNICODE");

我将它传递给Json对象,就像这样

synchronizationResponse = gson.fromJson(reader, SynchronizationResponse.class);

但是这一行给出了OutOfMemory Exception。 我在一个文件中写了响应,发现文件的大小约为12MB。 他们可以通过多种方式将响应分成多个响应。所以我可以同时读写,以避免OOM异常。

寻求帮助

2 个答案:

答案 0 :(得分:0)

很难说,只要我们不知道,您的SynchronisationResponse类看起来像什么。 无论您的内容是什么,如果您可以将其拆分为子部分,请执行此操作并将其序列化。

答案 1 :(得分:0)

您可以使用JsonReader来解析大量JSON流,而不会耗尽内存。详细信息在文档中,但基本上您创建了一个JsonReader:

JsonReader reader = new JsonReader(new InputStreamReader(instream, "UNICODE"));

并使用reader.nextName()编写一个递归下降解析器来获取密钥,reader.nextString()reader.nextInt()等来获取值,reader.beginObject()reader.endObject()reader.beginArray()reader.endArray()标记对象边界。

这允许您以任何粒度一次读取和处理一个部分,而无需将整个结构保存在内存中。如果数据是长期存在的,则可以将其存储在数据库或文件中。