gpt4 book ai didi

java - 适当的 Java 堆大小

转载 作者:行者123 更新时间:2023-12-02 04:30:05 26 4
gpt4 key购买 nike

在尝试合并多个 PDF 文档时,我遇到以下错误......

    PDFMerger failed with the following exception:
org.apache.pdfbox.exceptions.WrappedIOException
at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:278)
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1220)
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1187)
at org.apache.pdfbox.util.PDFMergerUtility.mergeDocuments(PDFMergerUtility.java:237)
at org.apache.pdfbox.util.PDFMergerUtility.mergeDocuments(PDFMergerUtility.java:194)
at org.apache.pdfbox.PDFMerger.merge(PDFMerger.java:82)
at org.apache.pdfbox.PDFMerger.main(PDFMerger.java:44)
at org.apache.pdfbox.PDFBox.main(PDFBox.java:83)

Caused by: java.lang.OutOfMemoryError: Java heap space
at org.apache.pdfbox.io.RandomAccessBuffer.clone(RandomAccessBuffer.java:69)
at org.apache.pdfbox.cos.COSStream.clone(COSStream.java:78)
at org.apache.pdfbox.cos.COSStream.<init>(COSStream.java:102)
at org.apache.pdfbox.pdfparser.BaseParser.parseCOSStream(BaseParser.java:409)
at org.apache.pdfbox.pdfparser.PDFParser.parseObject(PDFParser.java:650)
at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:203)
... 7 more

我认为明显的解决方案是增加堆空间(但我不确定)。该例程适用于 20-30 个文件,但接近 100 个文件时会引发异常。

环境是一个带有 Java 1.8.0 的 apache2 Web 服务器,我通过 PHP exec() 调用命令...

    // Build a string for PDF box...
$mergepdf = "java -jar pdfbox-app-1.8.9.jar PDFMerger ";

foreach ($drawings as $key => $id){
$mergepdf .= $path.$userid."-".$key.".pdf ";
}

$mergepdf .= $path.$pdffilename;

// Make the compiled pdf
exec($mergepdf);

用户可以请求他想要下载多少个 pdf。目的是合并它们并提供编译后的 PDF。因为在编程时PDF的数量和大小是未知的(最坏的情况下,数量可能超过1000个,每个大小在2M到30M之间)。

设置堆大小的安全限制是多少,或者如何确定运行例程的适当堆大小 - 执行时我期望 Web 服务器上有什么 imapacts?调到最大有问题吗?

我在 Ec2 上使用 T2.micro 实例。

最佳答案

最大堆大小是您宁愿程序失败而不是继续使用更多内存的点。这通常取决于您拥有的机器的大小,即您可以将最大值设置为机器内存的 80%。

关于java - 适当的 Java 堆大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31577404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com