Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置:
JAVA_OPTS='-Xms[初始化内存大小] -Xmx[可以使用的最大内存] 一般说来,你应该使用物理内存的 80%作为堆大小。
环境 tomcat-7.0.55
加在这个位置
rem ----- Execute The Requested Command ---------------------------------------
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m
echo Using CATALINA_BASE: "%CATALINA_BASE%"
参数说明:
-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmx:java heap最大值,使用的最大内存
上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。
-XX:PermSize:设定内存的永久保存区域
-XX:MaxPermSize:设定最大内存的永久保存区域
2.windows服务启动
如果你的tomcat是注册为windows服务并且是以服务方式启动的,那么上面的方法就无效了,因为这时tomcat启动是读取注册表的参数,而不是读取批处理文件的参数,这时我们有两种方法来设置jvm参数。
第一种比较简单,tomcat为我们提供了一个设置启动参数的窗体,双击tomcat_home/bin目录下的tomcat6w.exe,如图
如果提示没有安装此服务,把服务名称改成和tomcatxw.exe一样的tomcatx就好了
查看tomcat的JVM内存有两种方法
<span style="font-size:14px;"><%@ page contentType="text/html;charset=GBK"%>
<% out.println("总 内 存: " +java.lang.Runtime.getRuntime().totalMemory() / 1024 / 1024 +"MB");
out.println("<br>");
out.println("可用内存: " +java.lang.Runtime.getRuntime().freeMemory() /1024 / 1024 + "MB");%></span>
第二种》
tomcat7中默认没有用户的,我们首先要添加用户有:
修改E:\tomcat\conf\tomcat-users.xml
检查webapps下是否有Manager目录,一般发布时我们都把这个目录删除了,现在看来删除早了,在调试期要保留啊!
访问地址:
http://localhost:8080/manager/status
查看内存配置情况,经测试-Xms512m -Xmx512m与-Xms1024m-Xmx1024m内存使用情况不一样,使用1024的时候有一项内存使用99%。所以看来这个设置多少与实际机器有关,需要Manager进行查看后确定。
在启动Tomcat中发现,有同志发布程序时把我们在TOMCAT7中引用的外部JAR包重复发布到LIB目录下了,我们以后在发布时要检查LIB下是不是包括
el-api.jar
2、增大TOMAT的连接数:
connectionTimeout="2000"
redirectPort="8443" enableLookups="false"
acceptCount="5000" maxThreads="100"URIEncoding="UTF-8"/>
maxThreads:最大线程数 200
minSpareThreads:初始化建立的线程数 100
maxThreads:一旦线程超过这个值,Tomcat就会关闭不再需要的线程。