适当的Java堆大小
在尝试合并多个PDF文档时,我遇到以下错误适当的Java堆大小,java,heap,Java,Heap,在尝试合并多个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(PDDocumen
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
用户可以请求下载多少PDF。其目的是合并它们并提供一个已编译的PDF。因为PDF的数量和大小在编程时是未知的(在更糟糕的情况下,计数可能超过1000,每个大小在2M到30M之间)
设置堆大小的安全限制是什么?或者,如何确定运行例程的适当堆大小?以及在执行时,我希望web服务器上有什么IMAPACT?把它调到最大值有问题吗
我正在Ec2上使用T2.micro实例。最大堆大小是您希望程序失败而不是继续使用更多内存的点。这通常由您拥有的机器大小决定,即您可以将最大值设置为机器内存的80% 足够容纳你的一根绳子。没有简单的答案。这取决于PDF的大小和复杂性。
// 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);