Tomcat内存设置配置步骤
Tomcat的内存配置主要通过调整JVM参数实现,核心参数包括初始堆内存(-Xms)、最大堆内存(-Xmx)、永久代内存(-XX:PermSize/-XX:MaxPermSize,Java 8后替换为-XX:MetaspaceSize/-XX:MaxMetaspaceSize)等。以下是不同环境下的具体配置方法及注意事项:
修改%TOMCAT_HOME%\bin\catalina.bat文件(%TOMCAT_HOME%为Tomcat安装目录),在文件开头添加以下内容(建议将Xms和Xmx设置为相同值,避免堆内存频繁扩容):
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m
-Xms512m:JVM初始堆内存为512MB;-Xmx1024m:JVM最大堆内存为1024MB(不超过物理内存的80%);-XX:PermSize=128m:永久代初始内存(用于存储Class元数据,Java 8前有效);-XX:MaxPermSize=256m:永久代最大内存。若Tomcat以Windows服务形式运行,需通过注册表修改内存参数:
regedit),导航至路径:HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\TomcatX\Parameters\Java(TomcatX为服务名称,如Tomcat8);JvmMs(初始内存)和JvmMx(最大内存)键值,修改其数值(单位:MB),例如:
JvmMs:512;JvmMx:1024;修改$TOMCAT_HOME/bin/catalina.sh文件($TOMCAT_HOME为Tomcat安装目录),在文件开头(cygwin=false之上)添加以下内容:
JAVA_OPTS="-server -Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m -Xss1024K"
-server:启用JDK的Server模式(提升性能,适用于生产环境);-Xss1024K:每个线程的栈内存大小(默认1MB,可根据应用线程数调整,减少内存占用)。若在Eclipse中通过“Servers”视图运行Tomcat(外置Tomcat),需通过以下步骤修改内存:
Open;Open launch configuration(打开启动配置);Arguments标签页;VM arguments文本框中追加以下内容:-Xms512M -Xmx1024M -XX:PermSize=128M -XX:MaxPermSize=256M
Apply保存设置,重启Tomcat。堆内存(-Xms/-Xmx):
-Xms:JVM启动时分配的初始堆内存(默认为物理内存的1/64);-Xmx:JVM可使用的最大堆内存(默认为物理内存的1/4)。-Xms和-Xmx设置为相同值,避免堆内存频繁扩容(扩容会导致GC停顿,影响性能)。堆内存最大值不宜超过物理内存的80%(如16GB物理内存,建议设置为12GB以内)。永久代/元空间(-XX:PermSize/-XX:MaxPermSize / -XX:MetaspaceSize/-XX:MaxMetaspaceSize):
-XX:MaxPermSize=256m或-XX:MaxMetaspaceSize=512m),避免OutOfMemoryError: PermGen space错误。年轻代(-Xmn):
年轻代是堆内存的一部分,用于存储新创建的对象(存活时间短的对象)。建议设置为堆内存的1/3~1/4(如-Xmx1024m时,-Xmn设置为256MB~384MB),提升Minor GC效率。
修改配置后,重启Tomcat,通过以下命令验证内存参数是否生效:
# Linux
sudo lsof -i:8080 # 假设Tomcat端口为8080
# Windows
netstat -ano | findstr :8080
<PID>为Tomcat进程ID):# Linux
sudo jmap -heap <PID>
# Windows
jmap -heap <PID>
输出中需包含配置的-Xms、-Xmx等参数值。-XX:MetaspaceSize和-XX:MaxMetaspaceSize替代-XX:PermSize和-XX:MaxPermSize;-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/to/gc.log),监控GC情况,进一步优化内存配置。