我需要从在线数据库到Android应用程序获取大量数据(比如7000条记录)。在网上搜索时,我发现在从字符串转换时,大量数据会导致json中的outofmemory问题。解决方案是在gson或jackson的帮助下转换json。我有两个问题如下
转换json以避免内存不足问题的另一种解决方案。
我应该以xml格式获取数据吗?如果是的话,我是否可以解决内存不足问题?
String result = convertStreamToString(is);
JSONObject jObject = new JSONObject(result); // Only i am getting outofMemory Exception..
private static String convertStreamToString(InputStream inputStream)
throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
InputStream in = new BufferedInputStream(inputStream);
byte[] buffer = new byte[1024];
int n = 0;
try {
while (-1 != (n = in.read(buffer))) {
out.write(buffer, 0, n);
}
} finally {
out.close();
in.close();
}
return out.toString("UTF-8");
}
答案 0 :(得分:1)
我认为xml格式将允许您获取大量数据。我正在开发一个项目,我用xml下载大约15000个数据,没有内存问题。
答案 1 :(得分:0)
您应该使用Jackson
,因为它是一个流处理器,您可以直接以InputStream
方式输入ObjectMapper.readValue()
方法。只要记录本身不太重,那么你应该能够将它们留在记忆中。也就是说,您可能不应该将它们保存在内存中,您应该将它们提供给数据库并从那里查询它们。