Linux环境下Tomcat内存设置步骤
Tomcat的内存设置需修改其启动脚本catalina.sh(位于Tomcat安装目录的bin子目录下,如/opt/tomcat/bin/catalina.sh)。该脚本负责启动Tomcat时传递JVM参数。
使用文本编辑器(如vim)打开catalina.sh,在文件顶部(建议在#!/bin/sh或# OS specific support.注释之后)添加JAVA_OPTS变量,用于定义JVM内存参数。示例如下:
JAVA_OPTS="-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m"
-Xms512m:JVM初始堆内存大小(启动时分配),设为512MB;-Xmx1024m:JVM最大堆内存大小(运行时允许分配的最大值),设为1024MB;-XX:PermSize=128m:永久代(PermGen)初始内存大小(存放Class、Meta信息),设为128MB;-XX:MaxPermSize=256m:永久代最大内存大小,设为256MB。-Xms与-Xmx设为相同值(如均为1024m),避免堆内存动态调整带来的性能开销;PermSize/MaxPermSize)仅在JDK 7及以下版本需要设置,JDK 8及以上版本已替换为元空间(Metaspace),无需配置。编辑完成后,保存文件并退出编辑器(vim中按:wq)。
使配置生效,需重启Tomcat服务。根据系统服务管理工具不同,选择以下命令之一:
systemctl(主流Linux发行版,如CentOS 7+、Ubuntu 16.04+):sudo systemctl restart tomcat
service(旧版系统):sudo service tomcat restart
通过以下两种方式验证内存设置是否成功:
sudo lsof -i:8080 # 假设Tomcat监听8080端口,根据实际端口修改
输出中找到PID(如12345),再执行:sudo jmap -heap 12345
在输出结果中,检查MaxHeapSize(最大堆内存)、PermSize(永久代初始内存)、MaxPermSize(永久代最大内存)等参数,确认是否与配置一致。/manager/html),登录后可进入“Server Status”页面,查看“Memory Pool”部分的堆内存和永久代内存使用情况。-Xmx值(如从1024m调整为2048m),但需确保不超过物理内存的80%(避免系统内存耗尽)。-XX:MaxPermSize值(如从256m调整为512m),或升级至JDK 8及以上(使用元空间替代)。catalina.sh时需使用sudo(如sudo vim /opt/tomcat/bin/catalina.sh),确保有足够的权限修改文件。