Tomcat的内存配置主要通过JVM参数调整,关键参数及作用如下:
-Xms:初始堆内存大小(如-Xms512m表示初始分配512MB)。建议与-Xmx设置为相同值,避免JVM频繁扩展堆内存导致性能波动。-Xmx:最大堆内存大小(如-Xmx2048m表示最多使用2GB)。需根据服务器物理内存和应用负载调整,一般不超过物理内存的50%(如16GB物理内存可设为8GB),且最大不超过32GB(超过32GB时,JVM的压缩指针特性会失效,反而降低性能)。-XX:MaxMetaspaceSize(JDK 8+):元空间最大大小(替代JDK 7及之前的-XX:MaxPermSize)。默认无限制,但建议设置为256m-512m,避免元空间无限膨胀导致内存溢出。-Xmn(年轻代大小,如-Xmn512m)或-XX:NewSize/-XX:MaxNewSize(年轻代初始/最大大小)。年轻代占堆内存的1/4-1/3为宜(如堆内存1GB,年轻代可设为256MB-350MB),影响Minor GC频率。根据服务器内存和应用类型,推荐以下配置:
小型应用(服务器内存≤4GB)
JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m"JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxPermSize=256m"中型应用(服务器内存4GB-8GB)
JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MaxMetaspaceSize=512m"JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MaxPermSize=512m"大型应用(服务器内存≥8GB)
JAVA_OPTS="-Xms2048m -Xmx4096m -XX:MaxMetaspaceSize=1024m -XX:+UseG1GC"-XX:+UseG1GC启用G1垃圾回收器,提升大内存下的GC效率,减少停顿时间。catalina.sh通常位于/usr/share/tomcat/bin/或/opt/tomcat/bin/(根据安装路径调整)。vi)打开catalina.sh,在文件开头添加或修改JAVA_OPTS变量(参考上述推荐配置)。sudo systemctl restart tomcat(或sudo service tomcat restart)使配置生效。top、htop命令查看系统内存占用,或使用jstat -gcutil <Tomcat_PID> 1000(每秒输出一次GC情况)监控JVM内存使用。OutOfMemoryError,使用jmap -dump:live,format=b,file=heapdump.hprof <Tomcat_PID>导出堆转储文件,再用jhat或MAT工具分析泄漏点。-Xmx或调整年轻代大小),避免一次性设置过大导致资源浪费。注:以上配置为通用建议,需结合服务器实际硬件资源(如CPU核心数、内存大小)、应用特性(如并发量、数据处理量)及负载情况进行调整。生产环境建议先在测试环境验证配置效果。