【问题标题】:Java - Getting an OutOfMemoryError while parsing a ZipInputStreamJava - 解析 ZipInputStream 时出现 OutOfMemoryError
【发布时间】:2016-10-22 16:58:27
【问题描述】:

我在读取从 Web 服务检索到的 zip 文件的内容时遇到问题。

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

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

当我执行IOUtils.toString(zis) 时,我得到一个OutOfMemoryError: Java heap space

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

有没有办法读取 zip 的内容而不将其存储在内存中?

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

【问题讨论】:

    标签: java json zip out-of-memory zipinputstream


    【解决方案1】:

    如果您使用的是 IDE,请尝试这样做

    Run Configuration > Arguments > -Xmx7048m
    

    增加最大编译内存

    【讨论】:

    • 这可能是一个解决方案,但我的代码可以在我无法控制的环境中运行,因此我正在寻找更通用且基于代码的解决方案。顺便谢谢你;-)
    猜你喜欢
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多