我从web服务收到gziped的JSON,然后解压缩(解压的JSON的大小是3.2MB)。我需要将接收到的InputStream转换为字符串,这样我就可以创建JSONObject并解析它。我用下面的代码来实现:
public static String InputStreamToString(InputStream in)
throws IOException {
BufferedInputStream bis = new BufferedInputStream(in);
ByteArrayOutputStream buf = new ByteArrayOutputStream();
int result = bis.read();
while(result != -1) {
byte b = (byte)result;
buf.write(b);
result = bis.read();
}
return buf.toString();
}
在具有288MB Ram的模拟器和设备上,我在最后一行收到了java.lang.OutOfMemoryError:"return buf.toString();“。
怎么办?
发布于 2011-04-30 22:12:08
您可以尝试使用以下命令创建新的JSONObject
new JSONObject(new JSONTokener(in))
而不是直接转换为字符串。然而,这可能只会延迟问题。如果没有足够的内存将3.2兆字节的字符串加载到内存中,那么可能没有足够的内存将其作为json对象加载,这将比简单的字符串占用更多的内存。
https://stackoverflow.com/questions/5842201
复制相似问题