-1

我有一个读取 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[]>

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

编辑 我做了一些测试,最终的 80 页 PDF 集合的
大小超过 280mb(240 个 tiff,内部设置不同)

4

1 回答 1

2

好吧,您并没有给我们太多帮助,但我似乎很清楚,在内存中存储 100 多个高分辨率 TIFF 编码图像将很快耗尽您可用的任何资源。

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

或者,根据您的 JDBC 驱动程序,您可能能够将图像数据流式传输到 JDBC BLOB 中,因此您不必将其缓存在内存中。这里有一些思考的食物......

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

于 2012-11-14T10:17:58.287 回答