使用java阅读pdf

时间:2013-02-28 07:23:58

标签: java heap-memory itextpdf

我在使用 itextpdf.jar 阅读PDF文件内容时遇到问题,

如果我读了小尺寸(5-15MB)PDF文件意味着它运行良好,可以阅读它的内容

但当我阅读大尺寸(200MB)PDF文件表示其显示运行时异常,如下所示

enter code hereException in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2786)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:94)
at com.itextpdf.text.pdf.RandomAccessFileOrArray.InputStreamToArray(RandomAccessFileOrArray.java:213)
at com.itextpdf.text.pdf.RandomAccessFileOrArray.<init>(RandomAccessFileOrArray.java:203)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:235)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:246)
at general.FileStreamClose.main(FileStreamClose.java:28)

Java结果:1 enter code here

任何解决方案,如何增加tomcat中的堆大小

3 个答案:

答案 0 :(得分:0)

您可以调整Java Application Runtime设置:

将堆大小最大化为高值,-Xmx表示500M

调整-XX:MaxHeapFreeRatio-XX:MinHeapFreeRatio以确保在堆减少时消耗大量内存时应用程序不会变得无法响应。

答案 1 :(得分:0)

为了增加tomcat的堆大小,你必须设置evnirenment变量JAVA_OPTS并让它包含-Xmx选项,例如-Xmx512m

这是一个示例脚本,您可以如何运行tomcat

@echo off
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_33
set CATALINA_HOME=C:\Program Files\apache-tomcat-7.0
set JAVA_OPTS=-XX:MaxPermSize=128m -Xmx512m -server
call %CATALINA_HOME%\bin\catalina.bat run

答案 2 :(得分:0)

了解更多信息,据我所知,如果您的机器增加32位xmx,xms堆大小将限制在1k ++左右。如果你需要更多,你需要安装java 64位(当然在64机器和64 OS)。