我有一个应用程序可以读取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,内部设置不同)
答案 0 :(得分:2)
嗯,你不能给我们很多东西继续,但我似乎很清楚,在内存中存储100多个高分辨率TIFF编码图像会很快耗尽你所拥有的任何资源。
最好将它分批加载到数据库中,例如一次只处理5页。
或者,根据您的JDBC驱动程序,您可以将图像数据流式传输到JDBC BLOB中,这样您就不必将其缓存在内存中。这是一些值得深思的东西......
http://artofsystems.blogspot.co.uk/2008/07/mysql-postgresql-and-blob-streaming.html