代码改变世界

myeclipse tomcat启动,内存溢出问题

2012-02-13 14:57  Batys  阅读(4512)  评论(0编辑  收藏  举报

在 启动过程中出现 内存 溢出问题,抛出类似如下异常信息:
java.lang.OutOfMemoryError: Java heap space

可以尝试办法:
A.修改Tomcat\bin\catalina.bat,添加如下内容
set JAVA_OPTS=-Xms256m -Xmx512m -Djava.awt.headless=true [-XX:MaxPermSize=128M]

B.eclipse->windows->preferences..->tomcat->jvm..->jvm文本框里,添加-Xms256m -Xmx512m

C.eclipse->preference->java->instal jres->edit,增加参数:-Xms256m -Xmx512m

参考原因: JVM中如果98%的时间是用于GC且可用的, Heap size不足2%的时候将抛出此异常信息。
JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。
可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。
Heap size的 -Xms -Xmn 设置不要超出物理内存的大小。否则会提示“Error occurred during initialization of VM Could not reserve enough space for object heap”。

朋友们,上面仅仅是问题表面的解决,根本上的解决还需要借助JVM内存监测工具,有待研究。。。。。
=============================

启动MyEclipse启动Tomcat无视catalina.bat中设置内存大小的问题。
在tomcat的catalina.bat中设置set JAVA_OPTS=-Xms128m -Xmx256m,直接使用startup.bat启动tomcat没有问题。但是在myeclipse中配置tomcat后,通过myeclipse启 动就出现内存溢出,之前在catalina.bat中设置的内存似乎没有作用。
解决方法:窗口->首选项->MyEcliipse->Application Servers->Tomcat->Tomcat5.x->JDK->Optional Java VM arguments中填写一下内容。
-Xms128m -Xmx256m
-Dcom.sun.management.jmxremote=true
内存具体大小视具体情况制定。

tomcat分为安装和压缩包形式,安装的情况catalina.bat设定、使用系统服务不会生效,而是存储在注册表中,位置是 HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions 修改时视情况而定。