I don't know when it does it's automatic garbage collection if that's the only issue. I tried adding the statement to tell it to garbage collect right after calling the method to render to PNG, though I believe I heard that doesn't actually do garbage collection right when that executes. It didn't appear to do anything. I'm running Java 6 Update 24. I tested it straight in Eclipse and even tried debug mode so it takes longer and watched it create a javaw.exe process in task manager which just kept going up on memory use. No matter how slowly I went through the program in debug mode the memory never went down so I expect that means it didn't garbage collect or the PNGRenderer is preventing some garbage from getting collected. The Renderer itself should be created and destroyed in the method that transforms. The transform method looks a lot like the PDFRenderer method which works fine. Why could I not create and save more than a couple dozen pages in PNG when I just tested a 1986 page report to PDF? When I render it to preview I am also rendering it to PDF so I can generate a print preview screen and be able to send to PDF/printer without rerunning it, but when I run a test program to generate 91 page output from Eclipse and watch the java process it creates in the task manager, memory use just generating a PDF got up to 294 MB while the preview got over 1 GB.
________________________________ From: Michael Rubin [mailto:mru...@thunderhead.com] Sent: Wednesday, May 18, 2011 8:24 AM To: firstname.lastname@example.org Subject: Re: Fop Memory Use Just a wild thought. But is there a way you could possibly get the JVM to garbage collect between each run? Maybe that might free the memory up? Thanks. -Mike On 18/05/11 13:20, Eric Douglas wrote: I am using Fop 1.0. I tried using Fop to transform a single document. When I got a little over 100 pages my FO file was over 5 MB. The transform crashed with a Java heap out of memory error. I managed to break the input down, as I'm using embedded code generating the input programmatically, and the PDF output is a lot smaller. So I'm currently transforming 10 pages at a time, setting the initial-page-number to the next sequence (1, 11, 21, etc). Then I save all the generated PDFs in memory and merge them using pdfbox. So far this is working great. I tried to do the same thing with the PNGRenderer, just calling a method to transform 10 pages at a time and save the output images in an array. The PNGRenderer is created locally in the method. It should be getting released when the method ends but the java process never releases any memory. I tested a 90 page report and the memory use was over 1 GB. I tested on another machine where the memory limit is apparently lower and it crashed on page 24. Everything about the method to render to PNG is the same as the method to render to PDF aside from the Renderer. Is there a problem with this renderer or something I could need to do different? Michael Rubin Developer Thunderhead Logo<http://thunderhead.com/email_signature/images/Thunderhead-logo.png> Tagline<http://thunderhead.com/email_signature/images/make-every-communi cation-count.png> Triangles<http://thunderhead.com/email_signature/images/triangles.png> T F M E W +44 20 8238 7400 +44 20 8238 7401 mru...@thunderhead.com www.thunderhead.com <http://www.thunderhead.com> Thunderhead featured in The Sunday Times Profit Track 100 league table of companies with fastest-growing profits. Click here <http://www.fasttrack.co.uk/fasttrack/press/pt11-lon.pdf> to read more. LinkedIn <http://www.linkedin.com/companies/25033/Thunderhead> twitter <http://twitter.com/Thunderheadon> RSS <http://www.thunderhead.com/rss/rss.php> YouTube <http://www.youtube.com/user/ThunderheadOn> <http://thunderheadinnovate.wordpress.com/> were-hiring <http://thunderhead.com/about/careers.php> The contents of this e-mail are intended for the named addressee only. It contains information that may be confidential. Unless you are the named addressee or an authorized designee, you may not copy or use it, or disclose it to anyone else. If you received it in error please notify us immediately and then destroy it.