Tomcat 預設堆內存較小(通常 256MB),生產環境必須根據業務調整 -Xms、-Xmx、-XX:MaxPermSize(JDK 7)或 -XX:MaxMetaspaceSize(JDK 8+)。本文提供 Linux 與 Windows 雙平台配置方法。
| 參數 | 含義 | 建議值 |
|---|---|---|
-Xms | 初始堆大小 | 設為 -Xmx 同值,避免動態擴縮開銷 |
-Xmx | 最大堆大小 | 物理內存 60-70%,預留給 OS、Metaspace、線程棧、Direct Memory |
-XX:MaxPermSize | 永久代大小 (JDK 7) | 128M-256M,視類加載量而定 |
-XX:MaxMetaspaceSize | 元空間大小 (JDK 8+) | 256M-512M,默認無上限建議設置 |
-Xss | 線程棧大小 | 256K-512K,高併發可調小 |
# 編輯 $CATALINA_HOME/bin/catalina.sh
# 在開頭添加(約第 100 行前)
export JAVA_OPTS="-Xms2g -Xmx2g -XX:MaxMetaspaceSize=512m -Xss256k"
# 創建 $CATALINA_HOME/bin/setenv.sh
#!/bin/bash
export JAVA_OPTS="-Xms2g -Xmx2g -XX:MaxMetaspaceSize=512m -Xss256k \
-XX:+UseG1GC -XX:MaxGCPauseMillis=200 \
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/tomcat/logs/heapdump.hprof"
chmod +x setenv.sh
Tomcat 啟動時自動讀取 setenv.sh,升級覆蓋 catalina.sh 不會丟失配置。
# systemd 服務文件 /etc/systemd/system/tomcat.service
[Service]
Environment="JAVA_OPTS=-Xms2g -Xmx2g -XX:MaxMetaspaceSize=512m"
rem 在 catalina.bat 開頭添加
set JAVA_OPTS=-Xms2g -Xmx2g -XX:MaxMetaspaceSize=512m -Xss256k
rem 創建 %CATALINA_HOME%\bin\setenv.bat
set JAVA_OPTS=-Xms2g -Xmx2g -XX:MaxMetaspaceSize=512m -Xss256k ^
-XX:+UseG1GC -XX:MaxGCPauseMillis=200 ^
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%CATALINA_HOME%\logs\heapdump.hprof
# 使用 Tomcat 服務管理器 (tomcat9w.exe) → Java 選項卡 → Java Options
# 或命令行註冊服務時指定
service.bat install Tomcat9 --JvmOptions "-Xms2g;-Xmx2g;-XX:MaxMetaspaceSize=512m"
# 查看進程參數
ps -ef | grep tomcat
# 或
jcmd VM.flags
# 或
jmap -heap
CATALINA_OPTS 僅用於 start/run,JAVA_OPTS 影響所有命令(含 shutdown),推薦統一 JAVA_OPTS-Xlog:gc*:file=/path/gc.log:time,uptime,level,tags (JDK 9+) 或 -XX:+PrintGCDetails -Xloggc:/path/gc.log (JDK 8)Linux 用 setenv.sh,Windows 用 setenv.bat。核心原則:-Xms=-Xmx、限制 Metaspace、啟用 GC 日誌、預留非堆內存。配置變更後重啟 Tomcat 生效。
Linux 部署 Web 應用亂碼問題根因分析與統一編碼解決方案
Linux PDF 編輯工具大比拚:PDFedit、Scribus、Flpsed、GIMP 功能與安裝全指南
Linux 檔案系統核心原理深度解析:從 inode 到 ext4/ReiserFS
Linux 管道破裂錯誤原理與解決方案:從 SIGPIPE 到最佳實踐
Vim 進階配置:核心指令速查、ctags/cscope 程式碼導航、打造 C/C++ IDE 環境
Linux 關機/重啟指令詳解:shutdown、halt、reboot、init 差異與最佳實踐