On 12 Dec 2008, at 15:28, Griffin,Sean wrote:

Hi Sean, Vsyamala,

I was assuming you were embedding FOP into your application and calling directly through Java. Since it appears you're launching from the command-line, it's up to the FOP command-line program on how it streams the output. Since you're specifying file names as your I/O, it stands to reason that you'd be reading from/writing to File I/O streams, so the use of a ByteArrayOutputStream in the PDFStream.add() method might be a red herring and perfectly normal.

Indeed. In general, a stack trace is next to useless for an OOMError. It will only tell you at what point in the process the error occurred, but it doesn't really say anything about the actual cause. If the error were to occur during a StringBuffer.append(), chances would be very slim that it's actually the StringBuffer that is responsible. It just means that append() needed to allocate a few extra bytes of memory, but other objects/code already used up the available heap space.

In this case, the PDFStream.add() method is FOP-internal, and IIC, no cause for concern. With a FO file of 45 MB, I'm suspecting the issue is caused by the fact that the entire document consists of a single fo:page-sequence, which is a very well-known limitation at the moment. If that is the case, the only workaround would be to introduce more structure in the document, so that you get sequences of 10-15 pages max. Well, even 40-50 pages should work nicely, and with 2GB of heap, I guess this could even be a lot more...


Cheers

Andreas

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to