[ https://issues.apache.org/jira/browse/PDFBOX-2512?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17257716#comment-17257716 ]
Ralf Hauser commented on PDFBOX-2512: ------------------------------------- Did a quick test with [^programWinter2015_20210103_091853-sig_LTV.pdf] 35MB when doing -Xmx70m , the signature works with -Xmx50m java.lang.OutOfMemoryError: GC overhead limit exceeded at java.lang.StringBuilder.toString(StringBuilder.java:407) at org.apache.pdfbox.pdfparser.BaseParser.readLong(BaseParser.java:1281) at org.apache.pdfbox.pdfparser.BaseParser.readObjectNumber(BaseParser.java:1212) at org.apache.pdfbox.pdfparser.PDFObjectStreamParser.privateReadObjectNumbers(PDFObjectStreamParser.java:104) at org.apache.pdfbox.pdfparser.PDFObjectStreamParser.parseObject(PDFObjectStreamParser.java:77) at org.apache.pdfbox.pdfparser.COSParser.parseObjectStreamObject(COSParser.java:779) at org.apache.pdfbox.pdfparser.COSParser.parseObjectDynamically(COSParser.java:637) at org.apache.pdfbox.pdfparser.COSParser.dereferenceCOSObject(COSParser.java:586) at org.apache.pdfbox.cos.COSObject.getObject(COSObject.java:115) at org.apache.pdfbox.pdfwriter.COSWriter.prepareIncrement(COSWriter.java:327) at org.apache.pdfbox.pdfwriter.COSWriter.write(COSWriter.java:1425) at org.apache.pdfbox.pdmodel.PDDocument.saveIncremental(PDDocument.java:997) ... with -Xmx30m java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3236) at java.io.ByteArrayOutputStream.toByteArray(ByteArrayOutputStream.java:191) at org.apache.pdfbox.cos.COSStream.createView(COSStream.java:218) at org.apache.pdfbox.pdfparser.PDFObjectStreamParser.<init>(PDFObjectStreamParser.java:48) at org.apache.pdfbox.pdfparser.COSParser.parseObjectStreamObject(COSParser.java:778) at org.apache.pdfbox.pdfparser.COSParser.parseObjectDynamically(COSParser.java:637) at org.apache.pdfbox.pdfparser.COSParser.dereferenceCOSObject(COSParser.java:586) at org.apache.pdfbox.cos.COSObject.getObject(COSObject.java:115) at org.apache.pdfbox.pdfwriter.COSWriter.prepareIncrement(COSWriter.java:327) at org.apache.pdfbox.pdfwriter.COSWriter.write(COSWriter.java:1425) at org.apache.pdfbox.pdmodel.PDDocument.saveIncremental(PDDocument.java:997) at org.apache.pdfbox.examples.signature.CreateVisibleSignature.signPDF(CreateVisibleSignature.java:... ... > OutOfMemory while signing large documents > ----------------------------------------- > > Key: PDFBOX-2512 > URL: https://issues.apache.org/jira/browse/PDFBOX-2512 > Project: PDFBox > Issue Type: Bug > Components: Parsing, Signing > Affects Versions: 1.8.7 > Reporter: Thomas Chojecki > Assignee: Thomas Chojecki > Priority: Major > Fix For: 1.8.8 > > Attachments: keystore.p12 > > > While working with large documents, we found some memory issues. > 1. The method close() in the COSDocument, clones the objectpool and does not > clean it properly. The cloning in getObjects() cause a OutOfMemory exception. > 2.The COSWriter copy the whole pdf into the memory for signing and does not > use BufferedInputStream for the FileInputStream which also has a big > performance impact. (PDFBOX-1798) > 3. The cloning of COSStreams cause a OutOfMemory exception > I used the CreateSignature example with a about 150 MB big document from here: > https://cdn-reichelt.de/bilder/downloads/reichelt_01-2015_DE_B_HQ.pdf > Additionaly I add a RandomAccessFile to the PDDocument.load in the > CreateSignature class. > PDDocument doc = PDDocument.load(document,new RandomAccessFile(new > File("d:\\temp.bin"), "rw")); (this prevent the OOM for the third case) > The use of a BuffedInputStream in case two, will increase the signing speed > from more than 5 minutes to less than 1 minute. -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org For additional commands, e-mail: dev-h...@pdfbox.apache.org