修改tomcat catalina.bat调整jvm内存及tomcat窗口标题

2023-10-28

开发这么久了,总会时不时碰到内存溢出的错误,知道应该去 catalina 中去设置一下jvm的内存大小。可是每次都忘记具体在哪个位置。而且,很多时候,出现内存溢出的环境都不是本机,而是服务器搭建环境的时候,而此时也没太多时间让自己去读一下 catalina.bat 这个脚本,只能每次都上网搜。今天正好有时间,就读了一下catalina.bat 这个脚本,记录一下。
以windows下的tomcat6.0.45 为例
脚本其实并不复杂。tomcat的启动一般是通过 startup.bat 这个脚本,一般是直接双击启动。
而catalina.bat 是在startup.bat 调用启动的。

startup.bat 脚本:

rem 判断当前系统版本,若是Windows_NT   则 setlocal 开启环境变量本地化
if "%OS%" == "Windows_NT" setlocal
rem ---------------------------------------------------------------------------
rem Start script for the CATALINA Server
rem ---------------------------------------------------------------------------

rem Guess CATALINA_HOME if not defined

rem 设置当前CURRENT_DIR变量值为当前目录%cd%
set "CURRENT_DIR=%cd%"
rem 若CATALINA_HOME 不为空,则跳转到gotHome,我一般不设置CATALINA_HOME,则不跳转,继续执行
if not "%CATALINA_HOME%" == "" goto gotHome
rem  设置CATALINA_HOME 为 上面定义的 CURRENT_DIR
set "CATALINA_HOME=%CURRENT_DIR%"
rem catalina.bat如果存在,则跳转到okHome
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
cd ..
set "CATALINA_HOME=%cd%"
cd "%CURRENT_DIR%"
:gotHome
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end
:okHome

set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

rem 再次跳转到okExec

rem Check that target executable exists
if exist "%EXECUTABLE%" goto okExec
echo Cannot find "%EXECUTABLE%"
echo This file is needed to run this program
goto end
:okExec

rem 判断 第一个输入参数:%1 是否为空,若为空,则到 doneSetArgs
rem Get remaining unshifted command line arguments and save them in the
set CMD_LINE_ARGS=
:setArgs
if ""%1""=="""" goto doneSetArgs
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto setArgs
:doneSetArgs

rem 执行 EXECUTABLE 即 catalina.bat 并传递一个参数 start : catalina.bat start
call "%EXECUTABLE%" start %CMD_LINE_ARGS%

:end

当前窗口关闭,并开启catalina.bat的窗口。


set "CURRENT_DIR=%cd%"
if not "%CATALINA_HOME%" == "" goto gotHome
set "CATALINA_HOME=%CURRENT_DIR%"
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
cd ..
set "CATALINA_HOME=%cd%"
cd "%CURRENT_DIR%"
:gotHome
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end
:okHome

rem Copy CATALINA_BASE from CATALINA_HOME if not defined
if not "%CATALINA_BASE%" == "" goto gotBase
set "CATALINA_BASE=%CATALINA_HOME%"
:gotBase

rem Ensure that any user defined CLASSPATH variables are not used on startup,
rem but allow them to be specified in setenv.bat, in rare case when it is needed.
set CLASSPATH=


rem 上述的代码主要是设置CATALINA_HOME和CATALINA_BASE 方法基本和startup.bat一样,tomcat5的时候需要配置CATALINA_HOME 而在6之后就不需要配置了,因为通过上述代码可以看到,启动的时候会先去检查,是否设置过该变量,若没有则设置为当前目录。

rem Get standard environment variables
if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome
call "%CATALINA_BASE%\bin\setenv.bat"
goto setenvDone
:checkSetenvHome
if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat"
:setenvDone

rem Get standard Java environment variables
if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath
echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat"
echo This file is needed to run this program
goto end
:okSetclasspath
set "BASEDIR=%CATALINA_HOME%"
call "%CATALINA_HOME%\bin\setclasspath.bat" %1
if errorlevel 1 goto end


rem  上面这一段作用是,判断是否存在setenv.bat或者setclasspath.bat 若存在就执行该脚本


if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir
set "CATALINA_TMPDIR=%CATALINA_BASE%\temp"
:gotTmpdir

rem Add tomcat-juli.jar and bootstrap.jar to classpath
rem tomcat-juli.jar can be over-ridden per instance
rem Note that there are no quotes as we do not want to introduce random
rem quotes into the CLASSPATH
if "%CLASSPATH%" == "" goto emptyClasspath
set "CLASSPATH=%CLASSPATH%;"
:emptyClasspath
if "%CATALINA_BASE%" == "%CATALINA_HOME%" goto juliClasspathHome
if not exist "%CATALINA_BASE%\bin\tomcat-juli.jar" goto juliClasspathHome
set "CLASSPATH=%CLASSPATH%%CATALINA_BASE%\bin\tomcat-juli.jar;%CATALINA_HOME%\bin\bootstrap.jar"
goto juliClasspathDone
:juliClasspathHome
set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar"
:juliClasspathDone

if not "%LOGGING_CONFIG%" == "" goto noJuliConfig
set LOGGING_CONFIG=-Dnop
if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuliConfig
set LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"
:noJuliConfig
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%

rem  执行到此处后,判断LOGGING_MANAGER是否存在,不存在跳转到noJuliManager
if not "%LOGGING_MANAGER%" == "" goto noJuliManager
set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
:noJuliManager
rem  此处设置java_opt环境变量。windows下是没有引号包裹的,否则设置了也会不生效!!!
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER% 

rem 覆写JAVA_OPTS的赋值,替换成我们需要的jvm参数即可。在生产环境推荐 增加 -server 参数。 sun的jdk推荐将启动内存和最大内存设置为同一个值,这样在空间不足时,缩短请求空间的时间。但是ibm的jdk千万不要这样,否则容易宕机。

set JAVA_OPTS=-server  -Xmx2500m -Xms2500m -Xmn1g -Xss512k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelGC 

rem 设置 启动和最大值均为2500m,新生代区域为1g,每条线程的空间为512k ,调整GC策略。

rem ----- Execute The Requested Command ---------------------------------------

echo Using CATALINA_BASE:   "%CATALINA_BASE%"
echo Using CATALINA_HOME:   "%CATALINA_HOME%"
echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"
if ""%1"" == ""debug"" goto use_jdk
echo Using JRE_HOME:        "%JRE_HOME%"
goto java_dir_displayed
:use_jdk
echo Using JAVA_HOME:       "%JAVA_HOME%"
:java_dir_displayed
echo Using CLASSPATH:       "%CLASSPATH%"

set _EXECJAVA=%_RUNJAVA%
set MAINCLASS=org.apache.catalina.startup.Bootstrap
set ACTION=start
set SECURITY_POLICY_FILE=
set DEBUG_OPTS=
set JPDA=

if not ""%1"" == ""jpda"" goto noJpda
set JPDA=jpda
if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport
set JPDA_TRANSPORT=dt_socket
:gotJpdaTransport
if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress
set JPDA_ADDRESS=8000
:gotJpdaAddress
if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend
set JPDA_SUSPEND=n
:gotJpdaSuspend
if not "%JPDA_OPTS%" == "" goto gotJpdaOpts
set JPDA_OPTS=-agentlib:jdwp=transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%
:gotJpdaOpts
shift
:noJpda


rem 根据当前参数决定如何启动,默认是 start 即从startup.bat启动时。跳转到doStart

if ""%1"" == ""debug"" goto doDebug
if ""%1"" == ""run"" goto doRun
if ""%1"" == ""start"" goto doStart
if ""%1"" == ""stop"" goto doStop
if ""%1"" == ""version"" goto doVersion



 ........ 

rem  判断 TITLE 是否为空,若为空则默认设置为Tomcat,这里我们可以修改为自己需要的值。
:doStart
shift
if not "%OS%" == "Windows_NT" goto noTitle
if "%TITLE%" == "" set TITLE=Tomcat
set _EXECJAVA=start "%TITLE%" %_RUNJAVA%
goto gotTitle
:noTitle
set _EXECJAVA=start %_RUNJAVA%
:gotTitle
if not ""%1"" == ""-security"" goto execCmd
shift
echo Using Security Manager
set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"
goto execCmd



:execCmd
rem Get remaining unshifted command line arguments and save them in the
set CMD_LINE_ARGS=
:setArgs
if ""%1""=="""" goto doneSetArgs
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto setArgs
:doneSetArgs

:end

通过上面两个地方的设置,则完成jvm内存的调整和标题的调整。
太多东西不写下来,过段时间就会忘记。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

修改tomcat catalina.bat调整jvm内存及tomcat窗口标题 的相关文章

随机推荐

  • windows7系统做文件服务器拒绝,简单几步解决win10系统gpsvc提示服务登录失败拒绝访问的问题...

    gpsvc是一个重要的系统程序 这个文件是随着win10系统在你的电脑中安装的时候一同形成的 最近有用户在使用win10系统时 登录gpsvc却出现了提示服务登录失败拒绝访问的情况 那么如何解决win10系统gpsvc提示服务登录失败拒绝访
  • <30天自制操作系统>第八天

    花了将近1周时间来理清之前模糊的概念 感觉思路清晰了很多 今天是八天内容中的最后一天 以后的内容就不会每天都写文章了 今天的内容还是关于鼠标的控制 但是是让它真正的动起来 在主函数中 我们取得了鼠标的数据 for io cli if fif
  • 学习MATLAB的第一天,梳理一些见到的函数。1.matlab中sin、cos、tan三角函数问题。2.abs函数。3.vpa函数。4.disp函数。5.class函数。6.logical函数。

    1 matlab中sin cos tan三角函数问题 在MATLAB中三角函数sin cos tan都是以弧度为单位的 例如sin 在括号中输入的数系统默认为输入的是弧度值 若想要输入角度值 可以采用以下两种方法 a 采用sind cosd
  • Git SourceTree 冲突解决方案

    Git现在越来越火 很多人都从Svn迁移到Git上面 Git让我们更加与世界接轨 不再是 局域网 的程序猿 特别是掌握了Git之后 会发现它真的很好用 本文对Git中比较烦人的冲突进行了详细的说明 希望能帮助那些刚接触Git的程序猿 亮点
  • javaScript基础面试题 --- == 与 ===有什么不同?

    与 有什么不同 比较的是数值 通过ValueOf方法做隐式转换 比较的是数据类型 和 数值 全部都是true console log 1 1 true console log true 1 true console log null und
  • openwrt中添加自定义驱动模块

    1 make menuconfig中的 kernel modules 其中的各个配置选项来自于下面目录中的 mk文件 root localhost openwrt openwrt trunk package kernel linux mod
  • vs2017 配置cuda 项目

    在这里记录一下 我用vs2017配置cuda项目过程中的种种问题 具体总结归类可分为如下几个步骤 一 增加 cu源码拓展类型 打开VS 依次打开 工具 选项 文本编辑器 文件拓展名 新增扩展名 cu 编辑器 Microsoft Visual
  • Windows Server 2008 R2 CVE-2012-0002/CVE-2012-0152 漏洞处理

    CVE 2012 0002 CVE 2012 0152 漏洞处理 发现漏洞 补丁信息查找 过程示例 下载补丁 补丁安装 漏洞处理结束 发现漏洞 通过nmap扫描windows server 发现上述 CVE 2012 002 CVE 201
  • Box2d学习笔记五:API学习之b2World

    以前做Android开发 每次需要查文档的时候 某个类某个方法 我就情不自禁的会把相关的方法全部看一遍 有些没用过的就猜它的意思 然后测试 我觉得这样的学习方法能快速的了解API 了解该类能完成的功能 所以按照我的惯例 学习box2d我也是
  • JDBC链接Access数据库

    JDBC链接Access数据库 1 新建Access数据库 mdb1 mdb 新建表 user 2 通过JDBC ODBC桥接器链接 首先设置odbc数据源 具体步骤为 打开控制面板 控制面板 gt 管理工具 gt 数据源 ODBC 打开数
  • ImportError: libGL.so.1: cannot open shared object file: No such file or directory缺少共享库

    原因 缺少共享库 解决方法 1 centos 1 yum install mesa libGL x86 64 测试可用 2 查到的方法 没有测试过 2 Ubuntu sudo apt update sudo apt install libg
  • ubuntu安装WPS2019以及解决缺少字体问题

    环境 ubuntu22 04 2 LTS 步骤 1 去官网下载最新的WPS 官网地址如下 WPS Office 2019 for Linux 支持多版本下载 WPS官方网站 2 sudo dpkg i 安装包 deb 3 安装完成 首次用W
  • FFmpeg 视频处理入门教程(转)

    FFmpeg 视频处理入门教程 阮一峰 FFmpeg 是视频处理最常用的开源软件 它功能强大 用途广泛 大量用于视频网站和商业软件 比如 Youtube 和 iTunes 也是许多音频和视频格式的标准编码 解码实现 FFmpeg 本身是一个
  • 一步一步学习Android TV/盒子开发(一)

    写在前面的话 本人做了几年的机顶盒和Android电视上的应用开发 写这些文章只是为了让初次接触大屏开发的同学能够快速上手 TV端因为没有触控操作 只有遥控操作 所以焦点处理 控制以及按键监听是其主要特点 焦点处理 设置可获取焦点 布局中需
  • pytorch量化中torch.quantize_per_tensor()函数参数详解

    torch quantize per tensor input scale zero point dtype 实现8位量化 摘要 对该函数各个参数的分析 量化 计算机运算时 默认32位浮点数 若将32位浮点数 变成8位定点数 会快很多 目前
  • Node.js 学习(二) 创建第一个应用

    如果我们使用PHP来编写后端的代码时 需要Apache 或者 Nginx 的HTTP 服务器 并配上 mod php5 模块和php cgi 从这个角度看 整个 接收 HTTP 请求并提供 Web 页面 的需求根本不需 要 PHP 来处理
  • 信息化建设第三方验收测试报告要求

    信息化建设是企业未来高质量发展的必由之路 也是企业法治的必要手段 信息化建设指品牌利用现代信息技术来支撑品牌管理的手段和过程 随着计算机技术 网络技术和通信技术的发展和应用 企业信息化已成为品牌实现可持续化发展和提高市场竞争力的重要保障 信
  • Html+css(第二天)

    1 列表标签 场景 在网页中按照行展示关联性的内容 如 新闻列表 排行榜 账单等 特点 按照行的方式 整齐显示内容 种类 无序列表 有序列表 自定义列表 1 1 无序列表 场景 在网页中表示一组无顺序之分的列表 如 新闻列表 特点 列表的每
  • kubernetes集群部署springcloud项目【AL】

    kubernetes集群部署springcloud项目 AL 先手工做 非自动化 环境 192 168 73 138 master 192 168 73 139 node1 192 168 73 140 node2 192 168 73 1
  • 修改tomcat catalina.bat调整jvm内存及tomcat窗口标题

    开发这么久了 总会时不时碰到内存溢出的错误 知道应该去 catalina 中去设置一下jvm的内存大小 可是每次都忘记具体在哪个位置 而且 很多时候 出现内存溢出的环境都不是本机 而是服务器搭建环境的时候 而此时也没太多时间让自己去读一下