2012-11-14 7 views
-1

J'ai une application qui lit un fichier PDF, transforme le contenu en collection de fichiers TIF et les envoie à Glass Fish Server pour les sauvegarder.java meilleure façon de transférer des images

Habituellement il ya 1-5 pages et cela fonctionne bien, mais quand j'ai un fichier d'entrée avec plus de 100 pages ... il jette une erreur sur le transfert.

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

Mettre plus de ressources n'est pas une bonne option dans mon cas, donc je suis à la recherche d'un moyen d'optimiser en quelque sorte. je stocke les données:

HashMap<TifProfile, List<byte[]> 

Y at-il une meilleure façon de stocker ou de les envoyer?

EDIT J'ai fait quelques tests et les collections finales pour PDF avec 80 pages
a une taille plus 280MB (240 tiff avec des paramètres différents à l'intérieur)

+0

Sans plus d'informations il y a peu que nous pouvons faire. –

+1

Quelle taille (en taille de Mo) est ce fichier PDF long de plus de 100? –

+0

Semble comme un problème lié à la mémoire pour moi. – Slim

Répondre

2

Eh bien, vous ne nous donne pas beaucoup à continuer , mais il me semble clair que stocker plus de 100 images encodées en haute résolution au format TIFF épuisera rapidement toutes les ressources dont vous disposez.

Il peut être préférable de le charger dans la base de données par lots, par ex. il suffit de manipuler 5 pages à la fois. En fonction de votre pilote JDBC, vous pouvez également diffuser les données d'image dans un BLOB JDBC afin de ne pas avoir à les mettre en mémoire cache. Heres quelques éléments de réflexion ...

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

Questions connexes