Tomcat 可用内存 的大小影响其工作性能,将出现 java.lang.OutOfMemoryError: Java heap space 等异常,从而导致客户端显示500错误。通过调整 Tomcat 的内存设置,可以解决此问题。
Tomcat 在 Windows 下的启动方式有两种:startup.bat 和 Windows服务。这两种方式对应的内存设置方法也不一样。
1、startup.bat
在 Tomcat 安装目录的bin文件夹下,找到catalina.bat文件,在最上面添加这样一句:
set JAVA_OPTS = -Xms256m -Xmx512m
这样JVM内存已经被改到最小 256 MB、最大 512 MB
重新执行 startup.bat 启动Tomcat 即可。
2、Windows服务
通过服务启动的 Tomcat,修改catalina.bat的方法不起作用。需修改注册表
打开注册表,查找 HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\MyTomcatService\Parameters\Java,其中MyTomcatService是你的Tomcat服务名,修改 JvmMS 和 JvmMX 的值,注意值的数制。
也可以运行 tomcat5w.exe //ES//MyTomcatService,打开Tomcat服务管理器,选择Java选项卡,修改
Initial memory pool(初始化设置的内存的大小)和
Maximum memory pool(最大内存的大小)
Tomcat 6对应是tomcat6w.exe。
重新启动Tomcat服务即可使 Tomcat 按新的内存设置工作。
注一,在Linux下,
修改“%TOMCAT_HOME%\bin\catalina.sh”文件,如 /usr/local/apache-tomcat-5.5.23/bin目录下的catalina.sh
添加:JAVA_OPTS='-Xms512m -Xmx1024m'
数字后面的“m”表示内存单位是MB,否则是KB。
-Xms:初始值
-Xmx:最大值
-Xmn:最小值
注二,可在程序中,用下列代码来查JVM内存情况
System.out.println("TotalMemory :::: " + (Runtime.getRuntime().totalMemory()/(1024*1024) + "M"));