欢迎光临衡阳市转运网
详情描述

1. 直接修改 catalina 脚本(Linux/Mac)

Linux/Unix/Mac:

# 编辑 catalina.sh
vim $CATALINA_HOME/bin/catalina.sh

# 在文件开头添加或在合适位置设置 JAVA_OPTS
export JAVA_OPTS="$JAVA_OPTS -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m"
export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"

Windows:

rem 编辑 catalina.bat
set "JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx1024m"
set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8"

2. 使用 setenv 脚本(推荐)

Linux/Unix/Mac:

# 创建或编辑 setenv.sh
vim $CATALINA_HOME/bin/setenv.sh

# 添加以下内容
export JAVA_OPTS="$JAVA_OPTS -Xms512m -Xmx1024m"
export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC"
export JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
export JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"

# 设置权限
chmod +x $CATALINA_HOME/bin/setenv.sh

Windows:

rem 创建或编辑 setenv.bat
set "JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx1024m"
set "JAVA_OPTS=%JAVA_OPTS% -XX:+UseG1GC"

3. Tomcat 作为服务时的配置

Windows 服务:

# 使用 tomcat8w.exe 图形界面配置
# 或在注册表中修改:
# HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\<ServiceName>\Parameters\Java
# 修改 Options 值

Linux systemd 服务:

# /etc/systemd/system/tomcat.service
[Service]
Environment="JAVA_OPTS=-Xms512m -Xmx1024m -XX:+UseG1GC"
Environment="CATALINA_OPTS=-Djava.security.egd=file:/dev/./urandom"

4. 常用的 JVM 参数配置示例

# 内存设置
-Xms512m              # 初始堆大小
-Xmx1024m             # 最大堆大小
-Xmn256m              # 新生代大小
-XX:MaxMetaspaceSize=256m  # 元空间最大大小

# GC 设置
-XX:+UseG1GC          # 使用 G1 垃圾回收器
-XX:+UseConcMarkSweepGC  # 使用 CMS 垃圾回收器
-XX:+PrintGCDetails   # 打印 GC 详情
-XX:+PrintGCDateStamps
-Xloggc:/path/to/gc.log  # GC 日志输出

# 性能优化
-XX:+DisableExplicitGC  # 禁止显式调用 System.gc()
-XX:+HeapDumpOnOutOfMemoryError  # OOM 时生成堆转储
-XX:HeapDumpPath=/path/to/dump.hprof
-XX:ErrorFile=/path/to/hs_err_pid%p.log  # 错误日志

# 编码和时区
-Dfile.encoding=UTF-8
-Duser.timezone=Asia/Shanghai

# 安全
-Djava.security.egd=file:/dev/./urandom  # 加速随机数生成

5. 通过启动命令直接传递参数

# 启动时直接指定
./catalina.sh start -Xms512m -Xmx1024m

# 或者使用 JAVA_OPTS 环境变量
JAVA_OPTS="-Xms512m -Xmx1024m" ./catalina.sh start

6. 验证配置是否生效

# 查看进程的 JVM 参数
jps -l
jinfo <pid> | grep -i xms  # 查看具体参数

# 或者在 Tomcat 启动日志中查看
tail -f $CATALINA_HOME/logs/catalina.out

7. 管理页面查看(需要启用)

如果启用了 JMX,可以通过 JConsole 或 VisualVM 连接查看。

最佳实践建议

使用 setenv 脚本:便于维护和版本控制 合理设置内存:根据应用需求调整,避免过大或过小 启用 GC 日志:便于排查性能问题 测试环境参数验证:在生产环境应用前充分测试 监控 JVM 状态:使用监控工具持续观察

选择哪种方式取决于你的部署环境和运维习惯。推荐使用 setenv.sh/bat 方式,因为它与 Tomcat 版本无关且易于管理。

相关帖子
衡阳市120救护车跨省转运|跨省转院救护车租赁,随时派车全国护送
衡阳市120救护车跨省转运|跨省转院救护车租赁,随时派车全国护送
如何利用办公室常备的零食,快速制作简易的创意午后茶点?
如何利用办公室常备的零食,快速制作简易的创意午后茶点?
未来的养老金体系如何应对人口年龄结构变化带来的支付压力挑战?
未来的养老金体系如何应对人口年龄结构变化带来的支付压力挑战?
在电梯发生急速下坠的极端假设情境中,跳起来能起到缓冲作用吗?
在电梯发生急速下坠的极端假设情境中,跳起来能起到缓冲作用吗?
衡阳市商城网站开发#安卓系统app开发,网站制作
衡阳市商城网站开发#安卓系统app开发,网站制作
株洲市网站建设制作#小视频代运营,一站式服务
株洲市网站建设制作#小视频代运营,一站式服务
永州市120救护车出租转院|长途救护车跨省运转,收费合理
永州市120救护车出租转院|长途救护车跨省运转,收费合理
非全日制用工的小时最低工资标准,与月最低工资标准之间如何进行换算比较?
非全日制用工的小时最低工资标准,与月最低工资标准之间如何进行换算比较?
研究地球上的极端环境微生物,对我们寻找外星生命有何重要启示?
研究地球上的极端环境微生物,对我们寻找外星生命有何重要启示?
过桥垫资费用与行业属性,不同行业过桥费率差异
过桥垫资费用与行业属性,不同行业过桥费率差异
为什么健身打卡晒朋友圈更容易坚持,被人点赞算不算一种隐形奖励?
为什么健身打卡晒朋友圈更容易坚持,被人点赞算不算一种隐形奖励?
怀化市长途120救护车出租转运|跨省转院救护车租赁,就近派车
怀化市长途120救护车出租转运|跨省转院救护车租赁,就近派车
扬州市企业网站定制#企业数字化,专业开发团队
扬州市企业网站定制#企业数字化,专业开发团队
共享单车在向三四线城市及县域市场普及过程中,遇到哪些独特挑战?
共享单车在向三四线城市及县域市场普及过程中,遇到哪些独特挑战?
2026年各大主流APP(如微信、支付宝、淘宝)的解绑手机号流程有何新变化?
2026年各大主流APP(如微信、支付宝、淘宝)的解绑手机号流程有何新变化?
邵阳市120救护车跨省护送病人回家|救护车转运,24小时在线服务电话
邵阳市120救护车跨省护送病人回家|救护车转运,24小时在线服务电话
当一个家庭成员离开共享组(如子女独立),如何平稳过渡订阅权益和账户?
当一个家庭成员离开共享组(如子女独立),如何平稳过渡订阅权益和账户?
茂名市专业网站设计公司#网站搜索引擎优化,一站式服务
茂名市专业网站设计公司#网站搜索引擎优化,一站式服务
郴州市长途救护车转院转运回家|长途医疗转运车出租,随时派车全国护送
郴州市长途救护车转院转运回家|长途医疗转运车出租,随时派车全国护送
岳阳市120长途救护车出租公司|跨省转院救护车租赁,专业接送病人
岳阳市120长途救护车出租公司|跨省转院救护车租赁,专业接送病人