Tomcat在大并发下,出现内存溢出的问题,可以通过修改Tomcat的内存大小解决此问题。
一、修改Tomcat内存大小
a、Linux服务器下
#打开在Tomcat的安装目录的bin文件的catalina.sh文件
vim tomcat目录/bin/catalina.sh
#在注释后面加上如下脚本:
#JAVA_OPTS='-Xms512m -Xmx1024m' 是设置Tomcat使用的内存的大小.
JAVA_OPTS='-Xms512m -Xmx1024m'
#XX:PermSize=64M -XX:MaxPermSize=256m 指定类空间(用于加载类)的内存大小
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=64M -XX:MaxPermSize=256m"
b、Windwos服务器下
#修改Tomcat目录下/bin/catalina.bat
#找到下面的内容
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
#在%DEBUG_OPTS%后追加-Xms256m -Xmx512m
上面的两种方法修改完后记得重启服务
二、查看现有Tomcat的内存大小
1、启动Tomcat
2、访问 http://localhost:8080/manager/status ,并输入您在安装Tomcat时输入的用户与口令,如 admin ,密码 admin(密码是您在tomcat安装时输入的)
#注:添加用户,修改conf/tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>
三、进入了Server Status页面后可以查看到具体的内存情况
Free memory: 423.01 MB Total memory: 510.06 MB Max memory: 1008.06 MB
空闲内存、总内存、最大可使用内存三个数据。确定了最大内存足够大时,Tomcat即可正常运转