Search code examples
javamemoryitextout-of-memoryheap-memory

outofmemory exception when using pdfreader itext version 5.5.0


Facing a strange issue while reading a pdf using pdfreader.(itext)

PdfReader reader = PdfReader(bytearray).

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3236) at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118) at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93) at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153) at com.itextpdf.text.pdf.PdfReader.FlateDecode(PdfReader.java:2071) at com.itextpdf.text.pdf.PdfReader.FlateDecode(PdfReader.java:1926) at com.itextpdf.text.pdf.FilterHandlers$Filter_FLATEDECODE.decode(FilterHandlers.java:108) at com.itextpdf.text.pdf.PdfReader.decodeBytes(PdfReader.java:2476) at com.itextpdf.text.pdf.PdfReader.decodeBytes(PdfReader.java:2424) at com.itextpdf.text.pdf.PdfReader.getStreamBytes(PdfReader.java:2489) at com.itextpdf.text.pdf.PdfReader.readObjStm(PdfReader.java:1430) at com.itextpdf.text.pdf.PdfReader.readDocObj(PdfReader.java:1365) at com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:672) at com.itextpdf.text.pdf.PdfReader.(PdfReader.java:181) at com.itextpdf.text.pdf.PdfReader.(PdfReader.java:250) at com.itextpdf.text.pdf.PdfReader.(PdfReader.java:240)

pdf is about 20 megabytes. strange thing is, this worked in 2020,in my old pc. i changed my pc few months back. suddenly this error pops up. any thoughts ? i tried this in intellij, no luck.intellij config looks like this. intellij 2019.3.5 community edition

> -Xms512m
> -Xmx820m
> -XX:ReservedCodeCacheSize=1024m
> -XX:+UseConcMarkSweepGC
> -XX:SoftRefLRUPolicyMSPerMB=50
> -ea
> -XX:CICompilerCount=2
> -Dsun.io.useCanonPrefixCache=false
> -Djava.net.preferIPv4Stack=true
> -Djdk.http.auth.tunneling.disabledSchemes=""
> -XX:+HeapDumpOnOutOfMemoryError
> -XX:-OmitStackTraceInFastThrow
> -Djdk.attach.allowAttachSelf=true
> -Dkotlinx.coroutines.debug=off
> -Djdk.module.illegalAccess.silent=true

any thoughts ? i am using a windows 10, 64 bit system- java 8


Solution

  • To convert my comment into an answer since the OP said it helped solve the problem:

    Increase the heap with -Xmx1500m (or even to -Xmx2048m).

    One side note: Why do you use such a huge code cache size? You can easily half that -XX:ReservedCodeCacheSize=512m (or even more -XX:ReservedCodeCacheSize=256m). To get an impression start on what you really need you can use jconsole and select code cache section.