Android Json对象正在发出OutOfMemory异常
我正在使用JSON框架从服务器更新客户端的数据。我有30个Pojo类,并从服务器收到Http响应。我使用该方法创建了Reader的对象Android Json对象正在发出OutOfMemory异常,android,json,Android,Json,我正在使用JSON框架从服务器更新客户端的数据。我有30个Pojo类,并从服务器收到Http响应。我使用该方法创建了Reader的对象 InputStream instream = entity.getContent(); reader = new InputStreamReader(instream, "UNICODE"); 我像这样将其传递到Json对象中 synchronizationResponse = gson.fromJson(reader, SynchronizationResp
InputStream instream = entity.getContent();
reader = new InputStreamReader(instream, "UNICODE");
我像这样将其传递到Json对象中
synchronizationResponse = gson.fromJson(reader, SynchronizationResponse.class);
但这一行给出了outOfMemory例外。
我将响应写入一个文件,发现文件大小约为12MB。
他们也可以将响应拆分为多个响应,这样我就可以同时读写以避免OOM异常
寻求帮助很难说,只要我们不知道同步响应类是什么样子的。 无论您的内容是什么,如果您可以将其拆分为多个子部分,请执行此操作并对其进行序列化。您可以使用解析来解析大量JSON流,而不会耗尽内存。详细信息在文档中,但基本上您创建了一个JsonReader:
JsonReader reader = new JsonReader(new InputStreamReader(instream, "UNICODE"));
并使用reader.nextName来获取键,reader.nextString、reader.nextInt等来获取值,以及reader.beginObject、reader.endObject、reader.beginArray、reader.endArray来标记对象边界,编写递归下降解析器
这允许您以任何粒度一次读取和处理一个片段,而无需将整个结构保存在内存中。如果数据是长期存在的,则可以将其存储在数据库或文件中