-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[]>

それらを保存または送信するためのより良い方法はありますか?

EDIT いくつかのテストを行い、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 に答える