You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Java堆空间不足的OutOfMemoryError错误?

如何解决Java堆空间不足的OutOfMemoryError错误?

看起来你在用jpdfbookmarks处理53M的PDF文件时遭遇了Java堆内存溢出的问题,我来分享几个可行的解决方案:

1. 调整JVM堆内存参数(最直接有效)

你当前命令里设置的最大堆内存是-Xmx512m,但53M的PDF文件在处理时需要完整加载到内存,再加上iText库本身的内存开销,512M的堆空间确实可能不够用。你可以尝试增大最大堆内存的限制,比如调整为1GB甚至2GB:

java -Xms256m -Xmx1024m -jar "/home/t/programs/jpdfbookmarks-2.5.2/jpdfbookmarks.jar" ./in.pdf -apply bmks.jpdf -o out.pdf
  • -Xms256m:设置初始堆内存为256MB,减少JVM动态扩容的额外开销
  • -Xmx1024m:设置最大堆内存为1GB,给程序足够的空间处理大体积PDF

如果1GB还是不够,可以继续调高到-Xmx2048m(2GB),具体数值可以根据你的系统可用内存灵活调整。

2. 其他优化建议

  • 检查jpdfbookmarks版本:如果使用的是旧版本,可能存在内存泄漏问题,尝试升级到最新版看看是否能改善内存占用情况
  • 关闭后台冗余程序:处理大文件时,关闭系统中其他占用内存较多的程序,给JVM腾出更多可用的系统内存

你提供的错误详情、文件及JVM信息

执行命令:

java -Xms64m -Xmx512m -splash:  -jar "/home/t/programs/jpdfbookmarks-2.5.2/jpdfbookmarks.jar" ./in.pdf -apply bmks.jpdf  -o out.pdf

错误栈追踪:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

at com.lowagie.text.pdf.MappedRandomAccessFile.clean(MappedRandomAccessFile.java:203)

at com.lowagie.text.pdf.MappedRandomAccessFile.close(MappedRandomAccessFile.java:178)

at com.lowagie.text.pdf.RandomAccessFileOrArray.close(RandomAccessFileOrArray.java:295)

at com.lowagie.text.pdf.PRTokeniser.close(PRTokeniser.java:128)

at com.lowagie.text.pdf.PdfReader.readPdf(PdfReader.java:526)

at com.lowagie.text.pdf.PdfReader.<init>(PdfReader.java:165)

at com.lowagie.text.pdf.PdfReader.<init>(PdfReader.java:154)

at it.flavianopetrocchi.jpdfbookmarks.itextbookmarksconverter.iTextBookmarksConverter.save(iTextBookmarksConverter.java:397)

at it.flavianopetrocchi.jpdfbookmarks.Applier.save(Unknown Source)

at it.flavianopetrocchi.jpdfbookmarks.JPdfBookmarks.applySave(Unknown Source)

at it.flavianopetrocchi.jpdfbookmarks.JPdfBookmarks.apply(Unknown Source)

at it.flavianopetrocchi.jpdfbookmarks.JPdfBookmarks.start(Unknown Source)

at it.flavianopetrocchi.jpdfbookmarks.JPdfBookmarks.main(Unknown Source)

文件信息:

$ ls -lh

total 60M

-rw-r--r-- 1 t users  14K Oct 10 20:14  bmks.jpdf

-rw-r--r-- 1 t users  53M Oct 10 20:30  in.pdf

JVM信息:

$ java --version

openjdk 17.0.3 2022-04-19

OpenJDK Runtime Environment (build 17.0.3+7-nixos)

OpenJDK 64-Bit Server VM (build 17.0.3+7-nixos, mixed mode, sharing)

备注:内容来源于stack exchange,提问作者Tim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 11:19:32