java - 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 版本
解决方案
尝试使用-Xmx扩展正在运行的 Java 的堆内存。
看看https://alvinalexander.com/blog/post/java/java-xmx-xms-memory-heap-size-control/了解 Xmx 是如何使用的。
推荐阅读
- touch - 使用 APFS 在 macOS 中更改符号链接的时间戳?
- android - Xamarin Android 中未显示按钮的自定义背景
- java - 如何使用在一个控制器中定义的变量在多个不同的控制器中使用?
- python - 如何通过添加“python”脚本使我的 html 和 css 正常工作?
- vulkan - 为什么 vkGetPhysicalDeviceSurfaceFormatsKHR 不必返回至少一种当前模式?
- pipe - 为什么用一根管子玩“乒乓球”游戏?
- python - 美丽的汤多个网址
- c# - 显示默认照片
- socket.io - Socket.io 动态消息
- python - TypeError:Cursor 类型的对象不是 JSON 可序列化的