使用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
部分。