2016-10-22 54 views
0

读取从Web服务检索到的zip文件的内容时出现问题。Java - 解析ZipInputStream时出现OutOfMemoryError

zip文件存储在一个名为bytes的字节数组中,如下面的代码所示。

ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(bytes.get())); 
String rawJson = IOUtils.toString(zis); 

当我执行IOUtils.toString(zis)我得到一个的OutOfMemoryError:Java堆空间

我很确定这个问题是由包含在zip中的json文件的尺寸引起的,大于150MB。我已经尝试过使用其他较小的文件,并且可以毫无问题地获得json内容。

有没有办法读取压缩文件的内容而不将其存储在内存中?

编辑: 我知道我可以增加我的堆内存,但是我正在寻找一个基于代码的解决方案,因为它woud在任何环境中工作。

回答

0

如果妳使用IDE,然后尝试做到这一点

Run Configuration > Arguments > -Xmx7048m 

增幅最大RAM编译

+0

这可能是一个解决方案,但我的代码可以在环境中运行的我无法控制好,所以我正在寻找一个更一般的,基于代码的解决方案。 谢谢你的方式;-) –