首页 > 解决方案 > java.lang.OutOfMemoryError:使用 itext PdfReader 读取大型 PDF 文件时超出 GC 开销限制

问题描述

我正在尝试使用 PDFReader 读取 pdf 文件并重新排序页面。它适用于尺寸较小但尺寸超过 200MB 的 PDF。它失败并出现以下错误

Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at com.lowagie.text.pdf.MappedRandomAccessFile$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.lowagie.text.pdf.MappedRandomAccessFile.clean(Unknown Source)
at com.lowagie.text.pdf.MappedRandomAccessFile.close(Unknown Source)
at com.lowagie.text.pdf.RandomAccessFileOrArray.close(Unknown Source)
at com.lowagie.text.pdf.PRTokeniser.close(Unknown Source)
at com.lowagie.text.pdf.PdfReader.readPdf(Unknown Source)
at com.lowagie.text.pdf.PdfReader.<init>(Unknown Source)
at com.lowagie.text.pdf.PdfReader.<init>(Unknown Source)

我使用的是 itext java 2.1.7 版本

标签: javaitext

解决方案


尝试使用-Xmx扩展正在运行的 Java 的堆内存。

看看https://alvinalexander.com/blog/post/java/java-xmx-xms-memory-heap-size-control/了解 Xmx 是如何使用的。


推荐阅读