This looks like a bad gc strategy. Many JVM exhaust all the memory before
doing gc. As far as I know nothing is left hanging in iText. The only
objects that may be persistent are the fonts if they are cached but that a
once only event.
The only way to check the eventual problem is for you to prepare a complete
runnable program (with a main(), not a servlet), so that I can reproduce
here the problem.
Best Regards,
Paulo Soares
> -----Original Message-----
> From: Greg Taylor [SMTP:[EMAIL PROTECTED]
> Sent: Friday, July 11, 2003 21:56
> To: '[EMAIL PROTECTED]'
> Subject: [iText-questions] excessive memory use on
> com.lowagie.text.Document.close()
>
> I checked the mail archives, but I couldn't find anything similar.
>
> We have code that generates a 12 page PDF document. It seems that
> initally
> everything is fine and the document is generated successfully. However,
> after generating a few documents this way, the app server that it's
> executing in (Weblogic 6.1SP2 on Windows) begins using excessive amounts
> of
> memory, e.g. around 700Mb! (Taken from the windows task manager VM Size
> column.) Naturally, this hammers a box pretty badly, but once the
> document
> is finally rendered and sent to the browser, the garbage collector cleans
> everything up. Our problem is that this basically shuts down the app
> server, which is pretty bad, and occasionally causes OutOfMemory
> errors/crashes it. The following stack trace was taken from an
> OutOfMemoryError where we were using iText v0.96:
>
> java.lang.OutOfMemoryError
> at java.util.zip.Deflater.init(Native Method)
> at java.util.zip.Deflater.<init>(Deflater.java:92)
> at java.util.zip.Deflater.<init>(Deflater.java:109)
> at
> java.util.zip.DeflaterOutputStream.<init>(DeflaterOutputStream.java:70)
> at com.lowagie.text.pdf.PdfStream.flateCompress(Unknown Source)
> at com.lowagie.text.pdf.PdfFormXObject.<init>(Unknown Source)
> at com.lowagie.text.pdf.PdfTemplate.getFormXObject(Unknown Source)
> at com.lowagie.text.pdf.PdfWriter.close(Unknown Source)
> at com.lowagie.text.pdf.PdfDocument.close(Unknown Source)
> at com.lowagie.text.Document.close(Unknown Source)
> at
> com.workbrain.tool.renderer.bo.pdf.PdfShow.doGet(PdfShow.java:167)
> at
> com.workbrain.tool.renderer.bo.pdf.PdfShow.doPost(PdfShow.java:38)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
> ...
>
> I upgraded to version 1.0 in the hopes of correcting the problem, but it
> still exists. I did a thread dump on the app server when it went into the
> Document.close (v1.0) method and got the following:
> "ExecuteThread: '7' for queue: 'default'" (TID:0x3192818,
> sys_thread_t:0x11375ef8, state:MW, native ID:0x450) prio=5
> at com.lowagie.text.pdf.ByteBuffer.formatDouble(Unknown Source)
> at com.lowagie.text.pdf.ByteBuffer.formatDouble(Unknown Source)
> at com.lowagie.text.pdf.PdfNumber.<init>(Unknown Source)
> at com.lowagie.text.pdf.PdfNumber.<init>(Unknown Source)
> at com.lowagie.text.pdf.PdfRectangle.<init>(Unknown Source)
> at com.lowagie.text.pdf.PdfRectangle.<init>(Unknown Source)
> at com.lowagie.text.pdf.PdfFormXObject.<init>(Unknown Source)
> at com.lowagie.text.pdf.PdfTemplate.getFormXObject(Unknown Source)
> at com.lowagie.text.pdf.PdfWriter.addSharedObjectsToBody(Unknown
> Source)
> at com.lowagie.text.pdf.PdfWriter.close(Unknown Source)
> at com.lowagie.text.pdf.PdfDocument.close(Unknown Source)
> at com.lowagie.text.Document.close(Unknown Source)
> at
> com.workbrain.tool.renderer.bo.pdf.PdfShow.doGet(PdfShow.java:173)
> at
> com.workbrain.tool.renderer.bo.pdf.PdfShow.doPost(PdfShow.java:38)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
> ...
>
> The following code snippet executes within a servlet. I know that the
> memory is all used within the close method because I had added some
> System.outs around the various calls and it always paused immediately
> after
> printing the one before the close call and before the one after.
>
> Document document = new Document();
> document.setMargins(aProps.getIntProperty("reportLeftMargin", 0),
> aProps.getIntProperty("reportLeftMargin", 0),
> aProps.getIntProperty("reportTopMargin", 0),
> aProps.getIntProperty("reportBottomMargin", 0)
> );
> document.setPageSize(new Rectangle(
> aProps.getIntProperty("reportPageWidth", 0),
> aProps.getIntProperty("reportPageHeight", 0))
> );
>
> // *** Creating the report ***
> response.setHeader("Content-type", "application/pdf");
> response.setHeader("Content-Disposition",
> "inline;filename=Report.pdf");
> response.setHeader("Cache-Control", "must-revalidate, post-check=0,
> pre-check=0");
> response.setHeader("Pragma", "public");
> // ********* OUTPUT *******
> ServletOutputStream out = null;
> PdfWriter writer = null;
> try {
> out = response.getOutputStream();
> writer = PdfWriter.getInstance(document, out);
> document.open();
> PdfContentByte cb = writer.getDirectContent();
> renderer.setContentByte(cb);
> renderer.doRendering(form, controls);
> } catch (Exception e) {
> if (logger.isEnabledFor(org.apache.log4j.Level.ERROR)) {
> logger.error(e, e);}
> throw new ServletException(e);
> } finally {
> if (document != null) document.close();
> if (out != null) { out.flush(); out.close(); }
> if (writer != null) writer.close();
> if (renderer != null) renderer.close();
> }
>
>
> Any help would be much appreciated.
>
> Thanks in advance,
> Greg Taylor.
> Workbrain Inc.
>
>
>
> -------------------------------------------------------
> This SF.Net email sponsored by: Parasoft
> Error proof Web apps, automate testing & more.
> Download & eval WebKing and get a free book.
> www.parasoft.com/bulletproofapps1
> _______________________________________________
> iText-questions mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/itext-questions
-------------------------------------------------------
This SF.Net email sponsored by: Parasoft
Error proof Web apps, automate testing & more.
Download & eval WebKing and get a free book.
www.parasoft.com/bulletproofapps1
_______________________________________________
iText-questions mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/itext-questions