前言
刚刚接触的项目是基于SSM,但Tomcat启动时默认的64M内存就总显得不太够。程序运行过程中经常出现OOM(OutOfMemError)。
措施
搜索网上的解决方案,还是比较好解决的,需要给MyEclipse设置Jvm内存大小(即设置Tomcat的Jvm内存大小) :
Windows–>preference–>MyEclipse–>Servers–>Tomcat–>Tomcatx.x(展开)–>JDK
在右边的Optional Java VM arguments里加上:-Xms512m -Xmx1024m
至于数值可以根据自己的电脑配置自己设定,具体如下图:
配置参数的含义
-Xms512m JVM初始分配的堆内存
-Xmx1024m JVM最大允许分配的堆内存,按需分配
-XX:MaxPermSize=256M JVM最大允许分配的非堆内存,按需分配
无效配置
根据网上有的说法,是在Windows->Preferences->Server->Tomcat->TomcatX.X中可填入启动参数,如下图所示:
根据实际情况测试,没有任何效果。经过更换JDK,更换不同版本的Tomcat(Tomcat6,Tomcat7, x64版,i86版,安装版,免安装版),无一种有效。后来测试发现:Windows–>preference–>MyEclipse–>Servers–>Tomcat–>Tomcatx.x(展开)–>JDK,JDK必须要配置。
这个地方大概是设置Tomcat启动时,调用的JVM的启动参数,只有这里设置的值足够大,Tomcat启动时设置的内存值才有意义。修改后从MyEclipse启动。通过VisualVM可以看到heap和Perm的最大值都相应的扩大了。