使用pdfreader itext版本5.5.0时发生内存外异常



使用pdfreader阅读pdf时遇到一个奇怪的问题。(itext(

PdfReader reader = PdfReader(bytearray).

线程中的异常"主";java.lang.OutOfMemoryError:java堆空间位于java.util.Arrays.copyOf(Arrays.java:3236(java.io.ByteArrayOutputStream.growt(ByteArrayOututStream.java:118(java.io.ByteArrayOutputStream.ensureCapacity(字节阵列输出流.java:93(在java.io.ByteArrayOutputStream.write(ByteArrayOututStream.java:153(网址:com.itextpdf.text.pdf.PdfReader.FlateDecode(PdfReader.java:2071(网址:com.itextpdf.text.pdf.PdfReader.FlateDecode(PdfReader.java:1926(在com.itextpdf.text.pdf.FilterHandlers$Filter_FLATEDODE.decode(FilterHandlers.java:108(网址:com.itextpdf.text.pdf.PdfReader.decodeBytes(PdfReader.java:2476(网址:com.itextpdf.text.pdf.PdfReader.decodeBytes(PdfReader.java:2424(在com.itextpdf.text.pdf.PdfReader.getStreamBytes(PdfReader.java:2489(网址:com.itextpdf.text.pdf.PdfReader.readObjStm(PdfReader.java:1430(网址:com.itextpdf.text.pdf.PdfReader.readDocObj(PdfReader.java:1365(网址:com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:672(com.itextpdf.text.pdf.PdfReader.(PdfReader.java:181(com.itextpdf.text.pdf.PdfReader.(PdfReader.java:250(com.itextpdf.text.pdf.PdfReader.(PdfReader.java:240(

pdf大约有20兆字节。奇怪的是,这在2020年起作用了,在我的旧电脑上。几个月前我换了电脑。突然出现了这个错误。有什么想法吗?我在intellij中尝试过,没有luck.intellij配置像这样。intellij 2019.3.5社区版

> -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

有什么想法吗?我使用的是windows 10,64位系统-java 8

将我的评论转换为答案,因为OP说它有助于解决问题:

使用-Xmx1500m增加堆(甚至增加到-Xmx2048m(。

有一点需要注意:为什么要使用这么大的代码缓存大小?你可以很容易地将-XX:ReservedCodeCacheSize=512m减半(甚至更多的-XX:ReservedCodeCacheSize=256m(。要想对您真正需要的东西有一个印象,可以使用jconsole并选择code cache部分。

最新更新