为tomcat分配内存

这里要分配的是允许java使用的最大内存大小,要根据MAS服务器实际配置而定。建议配置如下:
1G内存:JAVA_OPTS='-Xms512m -Xmx512m'
2G内存:JAVA_OPTS='-Xms512m -Xmx1024m'
4G内存:JAVA_OPTS='-Xms512m -Xmx2048m'
用vi打开/opt/tomcat/bin/catalina.sh,在开头加入:
JAVA_OPTS='-Xms512m -Xmx512m'
保存退出。
,由于没有修改注册表中相关参数,所以以windows服务方式启动时,修改的并没有生效。而通过<CATALINA_HOME>\bin\startup.bat 启动直接是通过<CATALINA_HOME>\bin\catalina.bat文件中的配置的。你需要重新加载到系统服务中才生效,或者你手工在注册表中查找修改启动值,加载到服务中的时候参数已经配置好了,自己修改artup.bat不会改变注册表中的参数设置。
解决方法:修改注册表中的参数,加入JVM初始化内存的参数:
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions
值为
-Dcatalina.home="C:\ApacheGroup\Tomcat 5.0"
-Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"
-Xrs
如加入 -Xms512m -Xmx800m
方式2:针对免安装的用户,也可以通过将tomcat注册为windows的一个服务的方式来实现:‘
我们可以对service.bat文件做一些其他修改,使tomcat更加能满足我们各种不同需求时的要求
1. 如果让tomcat编译jsp文件,就在PR_CLASSPATH中加入J2SDK的tools.jar
修改前:
set PR_CLASSPATH=%CATALINA_HOME%\bin\bootstrap.jar
修改后:
set PR_CLASSPATH=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar
2.要使用一个特定的JVM,就要修改jvm的参数;要使注册的windows服务的启动方式为自动,增加--Startup Automatic,这个是比较常用的;要用定制的server.xml配置文件并且传递多个参数给StartClass,要修改StartParams的值,各个值之间用分号分隔:
修改前:
"%EXECUTABLE%" //IS//%SERVICE_NAME% --Jvm auto
--StartClass org.apache.catalina.startup.Bootstrap --StopClass org.apache.catalina.startup.Bootstrap
--StartParams start --StopParams stop
修改后:
"%EXECUTABLE%" //IS//%SERVICE_NAME% --Jvm "%JAVA_HOME%\jre\bin\server\jvm.dll"
--StartClass org.apache.catalina.startup.Bootstrap --StopClass org.apache.catalina.startup.Bootstrap
--StartParams "-config;%CUSTOM_SERVERXML_FILE%;-nonaming;start" --StopParams stop
--Startup Automatic
3. 指定最大和最小的内存限制,要增加jvm的初始参数
修改前:
"%EXECUTABLE%" //US//%SERVICE_NAME% --JvmOptions
"-Dcatalina.base=%CATALINA_BASE%;-Dcatalina.home=%CATALINA_HOME%;-Djava.endorsed.dirs=%CATALINA_HOME%\common\endorsed"
--StartMode jvm --StopMode jvm
修改后:
"%EXECUTABLE%" //US//%SERVICE_NAME% --JvmOptions
"-Xms128M;-Xmx256M;-Dcatalina.base=%CATALINA_BASE%;-Dcatalina.home=%CATALINA_HOME%;-Djava.endorsed.dirs=%CATALINA_HOME%\common\endorsed"
--StartMode jvm --StopMode jvm
4.有时注册windows服务成功后,但是启动服务时显示“发生服务特定错误: 0.”
就是因为jvm没有指定,修改Jvm auto为Jvm "%JAVA_HOME%\jre\bin\server\jvm.dll"后重新注册windows服务就可以启动了
<think>嗯,用户想知道在Linux系统上部署Tomcat时如何分配内存。首先,我需要回忆一下Tomcat内存管理的相关知识。记得Tomcat是基于Java的,所以内存分配主要涉及到JVM的参数设置。JVM有堆内存和非堆内存,堆内存又分为新生代和老年代,非堆包括元数据区等。 用户可能是在部署过程中遇到内存不足的问题,比如OutOfMemoryError,所以需要调整内存参数。这时候应该修改Tomcat的启动脚本,通常是catalina.sh或者setenv.sh。需要找到JAVA_OPTS或者CATALINA_OPTS环境变量来设置。 然后,具体的内存参数有哪些呢?-Xms设置初始堆大小,-Xmx是最大堆大小,通常这两个值设为相同,避免动态调整带来的性能问题。还有-XX:PermSize和-XX:MaxPermSize,不过从Java 8开始,PermGen被元空间替代了,所以可能需要用-XX:MetaspaceSize和-XX:MaxMetaspaceSize。不过得注意用户的Tomcat版本和使用的Java版本,不同版本参数可能不同。 另外,非堆内存的设置也很重要,比如线程栈的-Xss,但通常不需要频繁调整。可能用户还遇到了元数据区的内存溢出,这时候需要调整Metaspace的参数。此外,垃圾回收策略的选择也会影响内存使用,比如使用G1 GC还是并行GC。 还要考虑到系统物理内存的大小,不能分配超过可用内存的数值。比如,如果服务器有4G内存,分配给Tomcat的堆内存可能设为2G,留出足够的内存给系统和其他进程。 可能需要指导用户如何创建setenv.sh文件,并在其中添加JAVA_OPTS的设置。例如,在Tomcat的bin目录下创建这个文件,然后添加类似export JAVA_OPTS="-Xms1024m -Xmx2048m"这样的参数。同时提醒用户需要重启Tomcat使配置生效。 另外,用户可能不知道如何验证配置是否生效,可以教他们使用jps和jcmd命令查看JVM参数,或者Tomcat的管理界面查看。还有日志文件的位置,检查是否有内存相关的错误信息。 可能还需要提到常见的问题,比如内存泄漏,如何生成堆转储文件进行分析。或者调整参数后仍然出现内存溢出,可能需要进一步优化应用代码,减少内存占用。 总之,步骤应该是:1. 确定需要调整的内存参数;2. 修改Tomcat的启动脚本;3. 重启Tomcat服务;4. 验证配置生效;5. 监控内存使用情况,调整优化。同时,引用相关的参考资料,比如设置JVM参数的文档,或者安装APR时的内存优化建议。</think>在Linux系统中为Tomcat分配内存,主要通过配置Java虚拟机(JVM)参数实现。以下是具体步骤: --- ### **步骤1:定位Tomcat启动脚本** Tomcat内存参数通常在启动脚本`catalina.sh`或自定义脚本`setenv.sh`中设置。推荐使用`setenv.sh`以避免直接修改默认脚本: ```bash # 在Tomcat的bin目录下创建或编辑setenv.sh cd /usr/local/tomcat/bin vi setenv.sh ``` --- ### **步骤2:配置JVM内存参数** 在`setenv.sh`中添加以下参数(示例为分配2GB堆内存): ```bash export JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m" ``` - `-Xms`: 初始堆大小(如`1024m`表示1GB) - `-Xmx`: 最大堆大小(建议与`-Xms`相同以避免动态调整开销) - `-XX:MetaspaceSize`: 元数据区初始大小(Java 8+替代PermGen) - `-XX:MaxMetaspaceSize`: 元数据区最大大小[^3] --- ### **步骤3:验证配置并重启Tomcat** 1. 赋予脚本执行权限: ```bash chmod +x setenv.sh ``` 2. 重启Tomcat: ```bash /usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh ``` 3. 检查内存参数是否生效: ```bash jcmd <Tomcat_PID> VM.flags | grep -E 'Xms|Xmx|MetaspaceSize' ``` --- ### **步骤4:优化非堆内存(可选)** - 线程栈大小:通过`-Xss`调整(默认约1MB) - 直接内存:使用`-XX:MaxDirectMemorySize` - 垃圾回收器:如G1 GC(添加`-XX:+UseG1GC`) --- ### **注意事项** 1. 总分配内存不应超过物理内存的80% 2. 监控内存使用:通过`jstat -gc <PID>`或VisualVM工具 3. 内存溢出时生成堆转储:`-XX:+HeapDumpOnOutOfMemoryError` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值