You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Tomcat中为Java8 WAR应用配置自定义垃圾回收算法

如何为Tomcat中的WAR应用配置G1GC或CMS GC

别担心,这事儿其实挺简单的!和Jar包直接加JVM参数的思路一致,只是需要把GC配置加到Tomcat的启动参数里就行。下面分几种常见场景给你说明:

1. 通过setenv脚本配置(推荐方式)

Tomcat官方推荐用setenv.sh(Linux/macOS)或setenv.bat(Windows)来自定义JVM参数,这样不会修改Tomcat核心配置文件,后续升级Tomcat时也能轻松保留配置。

具体步骤:

  • 找到你的Tomcat安装目录,进入bin文件夹
  • 如果没有setenv.sh/setenv.bat文件,自己手动创建一个
  • 根据你的操作系统添加对应的GC配置:

Linux/macOS(编辑setenv.sh)

# 启用G1GC,可添加停顿时间等调优参数
export CATALINA_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=200 $CATALINA_OPTS"

# 如果要启用CMS GC,替换成下面的参数(Java8中CMS仍可用)
# export CATALINA_OPTS="-XX:+UseConcMarkSweepGC -XX:+UseParNewGC $CATALINA_OPTS"

Windows(编辑setenv.bat)

# 启用G1GC,可添加停顿时间等调优参数
set CATALINA_OPTS=-XX:+UseG1GC -XX:MaxGCPauseMillis=200 %CATALINA_OPTS%

# 如果要启用CMS GC,替换成下面的参数(Java8中CMS仍可用)
# set CATALINA_OPTS=-XX:+UseConcMarkSweepGC -XX:+UseParNewGC %CATALINA_OPTS%

小贴士:CATALINA_OPTS是专门给Tomcat服务进程用的JVM参数,比JAVA_OPTS更合适——因为JAVA_OPTS可能会被其他Java程序共享,容易引发冲突。

2. 服务方式运行Tomcat的配置(Windows服务/Systemd)

如果你的Tomcat是作为系统服务运行的,配置方式略有不同:

Windows服务

  1. 打开Tomcat的bin文件夹,运行tomcatw.exe
  2. 切换到Java标签页
  3. 在Java Options输入框里添加-XX:+UseG1GC(或CMS的对应参数),点击确定后重启服务即可

Linux Systemd服务

  1. 找到Tomcat的systemd服务文件(通常路径为/etc/systemd/system/tomcat.service)
  2. 在[Service]段落里添加或修改Environment参数:
    Environment="CATALINA_OPTS=-XX:+UseG1GC -XX:MaxGCPauseMillis=200"
    
  3. 重新加载配置并重启服务:
    sudo systemctl daemon-reload
    sudo systemctl restart tomcat
    

3. 验证配置是否生效

配置完成后重启Tomcat,通过以下方式确认GC是否切换成功:

  • 查看Tomcat的catalina.out日志(在logs文件夹下),搜索关键词Using garbage collector,应该能看到对应GC的信息
  • 用jps -v命令找到Tomcat的进程ID,然后执行jinfo -flags <进程ID>,查看输出里是否有+UseG1GC或+UseConcMarkSweepGC的标记

内容的提问来源于stack exchange,提问作者Indunil Asanka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:03:19