java传输图像的最佳方式

时间:2012-11-14 09:57:30

标签: java file out-of-memory

我有一个应用程序可以读取PDF,将内容转换为TIF文件的集合,然后将它们发送到Glass Fish Server进行保存。

通常有1-5页,它工作得很好,但是当我得到一个100多页的输入文件时...... 它会在转移时抛出错误。

 Java heap space
at java.util.Arrays.copyOf(Arrays.java:2786)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:94)

在我的情况下,投入更多资源并不是一个好选择,所以我正在寻找一种方法来以某种方式优化它。 我将数据存储在:

HashMap<TifProfile, List<byte[]>

有更好的方法来存储或发送它们吗?

修改 我做了一些测试和PDF的最终集合,有80页 大小超过280mb(240 tiffs,内部设置不同)

1 个答案:

答案 0 :(得分:2)

嗯,你不能给我们很多东西继续,但我似乎很清楚,在内存中存储100多个高分辨率TIFF编码图像会很快耗尽你所拥有的任何资源。

最好将它分批加载到数据库中,例如一次只处理5页。

或者,根据您的JDBC驱动程序,您可以将图像数据流式传输到JDBC BLOB中,这样您就不必将其缓存在内存中。这是一些值得深思的东西......

http://artofsystems.blogspot.co.uk/2008/07/mysql-postgresql-and-blob-streaming.html