OpenClinica 用户手册/OutOfMemoryError
如果 Tomcat 报告包含以下消息的内部错误
root cause java.lang.OutOfMemoryError: Java heap space
您可以尝试使用 JVM 增加最大 Java 堆大小
-Xmx<size>
切换。
在尝试增加堆空间之前,最好先检查它的大小。您可以通过打开 Tomcat 的状态页面来查找它。但在您可以访问此页面之前,您必须在 tomcat-users.xml 文件中添加一个具有 tomcat-manager-role 的用户。此文件位于 Tomcat 目录结构的 conf/tomcat-users.xml 中。在其中添加两行
<role rolename="manager"/> <user username="tomcat" password="s3cret" roles="manager"/>
现在您可以在浏览器中输入 serveraddress:8080/manager/status 或 localhost:8080/manager/status。Tomcat 将显示一个包含进程统计信息的页面。您要查找的行标为“JVM”,它给出了三个值
例如,空闲内存、总内存和最大内存
Free memory: 48.42 MB Total memory: 61.87 MB Max memory: 123.75 MB
现在我们想将堆空间增加到例如 256。
登录到您的服务器。转到 /usr/local/tomcat/bin 文件夹
创建设置环境变量的 shell 脚本的安全副本,然后使用适当的权限启动您的编辑器
sudo -u tomcat cp setenv.sh setenv-20100930.sh sudo -u tomcat vi setenv.sh
更改包含 CATALINA_OPTS 的行以适应您的内存需求,例如
export JAVA_OPTS="-Xms64m -Xmx256m"
保存文件。
关闭 Tomcat 并重新启动。
浏览到 server-address:8080/manager/status 以检查更改是否已正确应用。
如何在 Tomcat 中为数据集创建增加 JVM 堆大小
- 停止 Apache tomcat
- 通过双击 tomcat5w.exe/tomcat6w.exe(位置:驱动器(例如 C)/tomact/bin/tomcat5w)转到 Apache tomcat 属性,或转到开始>所有程序>Apache Tomcat 5.5>配置 tomcat
- 单击 Java 选项卡
- 在 Java 选项卡下设置初始内存池和最大内存池。默认情况下,这些字段为空。
- 单击应用,然后单击确定
- 重新启动 Apache tomcat
在 Vista 中,这只有在您将服务命名为“tomcat6”时才会起作用!
在 Windows Vista 中,如果您不想将 Tomcat 作为服务启动,您可以使用两个批处理文件启动和停止 Tomcat,它们位于 CATALINA_HOME\bin 中。因为此批处理文件作为独立的 DOS 进程运行,所以您必须在“配置面板”、“系统”、“高级”、“系统变量”中设置涉及的环境变量。查找“JAVA_OPTS”变量。如果找不到,请创建它。请注意,此参数也会影响所有其他 JAVA 应用程序。如果您只想为 Tomcat 的 Catalina 增加堆空间,那么使用环境变量 CATALINA_OPTS。
如果同时设置了 CATALINA_OPTS 和 JAVA_OPTS,即使 CATALINA_OPTS 大于 JAVA_OPTS,也会使用 CATALINA_OPTS。
在参数字段中键入“-Xms64m -Xmx256m”
关闭 Tomcat 并重新启动。浏览到 /manager/status。JVM 行将类似于
Free memory: 48.44 MB Total memory: 61.87 MB Max memory: 247.50 MB
参数 Xms 定义 Tomcat 可用的初始内存量,第二个参数 Xmx 定义最大内存量。
另一种方法是使用 setenv.bat 文件。此文件并非包含在所有 Tomcat 安装中,因此您可能需要创建它。Startup.bat 检查一些设置,然后调用 catalina.bat,catalina.bat 检查更多设置,然后如果存在,则调用 setenv.bat。因此,这是设置 CATALINA_OPTS 的位置。
在文本编辑器中打开 setenv.bat 并添加(至少)一行
SET CATALINA_OPTS=-Xms64m -Xmx256m
您可以设置的另一个参数是 PermGen 的大小。根据 OpenClinica,您应该为每个 Web 实例分配约 180m 的 perm gen,为每个 Ws 实例分配约 90m 的内存。 [1]
您的设置将类似于
export JAVA_OPTS="-Xms256m -Xmx256m -XX:PermSize=180m"
Apache Tomcat 5.5 - Windows 服务 HOW-TO
Apache Tomcat 6.0 - Windows 服务 HOW-TO