You'll have to throw more memory at the jvm. More pages require more memory 
even if all that it's kept in memory is references to the page addresses.

Paulo

----- Original Message ----- 
From: "dhyton" <[EMAIL PROTECTED]>
To: <itext-questions@lists.sourceforge.net>
Sent: Friday, October 05, 2007 6:36 PM
Subject: [iText-questions] Out of memory when concatenating -- I have read 
the previous threads


>
> I am having a problem with running out of memory when concatenating files. 
> I
> did search the issues and have found no solution.   Below is my code. The
> output steam that is passed into the method for testing is a
> FileOutputStream. I am currently using itext 1.3 but I tested and had the
> same issue with the latest release. You can see I use a PDFCopy and do not
> keep any references to the reader around.
>
> The heap seems to grow very quickly.
>
> Can you please help?
> Thanks
> David
>
>    public static void assembleOnLargePDF(Rectangle pageSize, OutputStream
> sos, File jobDir, boolean paper, boolean preview, List<String> 
> householdIDs)
> throws DocumentException, IOException
>    {
>
>        Runtime runtime = Runtime.getRuntime();
>        System.gc();
>
>        System.out.println("Starting Process " + runtime.freeMemory() + " 
> of
> " + runtime.maxMemory());
>        Document allHHDocument = new Document(pageSize, 0, 0, 0, 0);
>        PdfCopy allHHCopy = new PdfCopy(allHHDocument, sos);
>
>        allHHDocument.open();
>        int count = 0;
>        for(String householdID : householdIDs)
>        {
>            System.gc();
>            System.out.println("Starting HH " + (count) + " " +
> runtime.freeMemory());
>
>            FileInputStream fileInputStream;
>            try
>            {
>                File file = new File(jobDir, householdID + ".pdf");
>                if(file.exists()) fileInputStream = new
> FileInputStream(file);
>                else continue;
>            }
>            catch(FileNotFoundException e)
>            {
>                continue;
>            }
>            PdfReader r = null;
>            try
>            {
>                r = new PdfReader(fileInputStream);
>                int numberOfPages = r.getNumberOfPages();
>                for(int j = 1; j <= numberOfPages; j++)
>                {
>                    allHHCopy.addPage(allHHCopy.getImportedPage(r, j));
>
>                }
>
>                allHHCopy.freeReader(r);
>
>                sos.flush();
>            }
>            finally
>            {
>                if(r != null)
>                    r.close();
>                fileInputStream.close();
>            }
>            System.gc();
>
>            System.out.println("Ending HH " + (count++) + " " +
> runtime.freeMemory());
>        }
>        allHHDocument.close();
>        allHHCopy.close();
>        System.gc();
>        System.out.println("Ending Process " + runtime.freeMemory());
>
>    }


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
iText-questions mailing list
iText-questions@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://itext.ugent.be/itext-in-action/

Reply via email to