linux与windows下tomcat的java内存设置

本文介绍如何在Linux及Windows环境下配置Tomcat服务器的JVM内存参数,包括-Xms、-Xmx、-XX:PermSize等关键参数的设置方法,并提供了具体的配置示例。

Linux下修改JVM内存大小:


要添加在tomcat 的bin 下catalina.sh文件中,找到cygwin=false,在这一行的前面加入参数,具体如下# vi TOMCAT_HOME/bin/catalina.sh(默认文件内容

1
export JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m"
1
export JAVA_OPTS="-server -Xms512m -Xmx1024m -Xss256k -XX:PermSize=128m -XX:MaxNewSize=256m -XX:MaxPermSize=256m"


以下是自己设置的另外增加一个setenv.sh文件来设置tomcat内存,给文件加上执行权限

1
2
3
4
5
6
7
#vi /opt/app/tomcat6/bin/setenv.sh 
export JAVA_OPTS="-server -Xms512m -Xmx1024m -XX:MaxNewSize=512m -XX:PermSize=128m  -XX:MaxPermSize=256m -XX:SurvivorRatio=14 -XX:+UseParallelOldGC"
或直接修改tomcat的配置文件
#vi TOMCAT_HOME/bin/catalina.sh
JAVA_OPTS="-server -Xms512m -Xmx1024m -XX:MaxNewSize=512m -XX:PermSize=128m  -XX:MaxPermSize=256m -XX:SurvivorRatio=14 -XX:+UseParallelOldGC"
JAVA_OPTS="-Xms512m -Xmx2048m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=512m"


jvm参数说明:

-server                一定要作为第一个参数,启用JDK的server版本,在多个CPU时性能佳 

-Xms                    启动应用时,JVM 堆空间的初始大小值(java Heap初始大小), 默认是物理内存的1/64。

-Xmx                    应用运行中,JVM 堆空间的极限值( java heap最大值)。为了不消耗扩大JVM 堆控件分配的开销,将此参数和-Xms 这个两个值设为相等,考虑到需要开线程,建议将此值设置为物理内存的80%,不可超过物理内存。

-Xmn                    此参数硬性规定堆空间的新生代空间大小,推荐设为堆空间大小的1/4(java heap最小值,一般设置为Xmx的3、4分之一)。

-XX:PermSize            应用服务器启动时,永久存储区的初始内存大(设定内存的永久保存区初始大小,缺省值为64M)。

-XX:MaxPermSize        应用运行中,永久存储区的极限值。为了不消耗扩大JVM 永久存储区分配的开销,将此参数和-XX:PermSize这个两个值设为相等。堆空间相关参数参数名参数说明(设定内存的永久保存区最大大小,缺省值为64M)。

-XX:SurvivorRatio=2    生还者池的大小,默认是2。如果垃圾回收变成了瓶颈,您可以尝试定制生成池设置

-XX:NewSize            新生成的池的初始大小。 缺省值为2M。

-XX:MaxNewSize          新生成的池的最大大小。 缺省值为32M。

+XX:AggressiveHeap      让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。 

-Xss                    每个线程的Stack大小

-verbose:gc            现实垃圾收集信息

-Xloggc:gc.log          指定垃圾收集日志文件

-XX:+UseParNewGC        缩短minor收集的时间

-XX:+UseConcMarkSweepGC 缩短major收集的时间

-XX:userParNewGC        可用来设置并行收集(多CPU)

-XX:ParallelGCThreads  可用来增加并行度(多CPU)

-XX:UseParallelGC      设置后可以使用并行清除收集器(多CPU)

-XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。


上面所列的JVM 参数关系到系统的性能,而其中-XX:PermSize,-XX:MaxPermSize,-Xms,-Xmx 和-Xmn 这5 个参数更是直接关系到系统的性能,系统是否会出现内存溢出。

-XX:PermSize 和-XX:MaxPermSize 分别设置应用服务器启动时,永久存储区的初始大小和极限大小;在生成环境中强烈推荐将这个两个值设置为相同的值,以避免分配永久存储区的开销,具体的值可取系统“疲劳测试”获取到的永久存储区的极限值;如果不进行设置-XX:MaxPermSize 默认值为64M,一般来说系统的类定义文件大小都会超过这个默认值。

-Xms 和-Xmx 分别是服务器启动时,堆空间的初始大小和极限值。-Xms的默认值是物理内存的1/64 但小于1G,-Xmx 的默认值是物理内存的1/4 但小于1G.在生产环境中这些默认值是肯定不能满足我们的需要的。也就是你的服务器有8g 的内存,不对JVM 参数进行设置优化,应用服务器启动时还是按默认值来分配和约束JVM 对内存资源的使用,不会充分的利用所有的内存资源。

 

结论:“永久存储区溢出(java.lang.OutOfMemoryError:Java Permanent Space)”乃是永久存储区设置太小,不能满足系统需要的大小,此时只需要调整-XX:PermSize 和-XX:MaxPermSize 这两个参数即可。“JVM 堆空间溢出(java.lang.OutOfMemoryError: Java heap space)”错误是JVM 堆空间不足,此时只需要调整-Xms 和-Xmx 这两个参数即可。


windows下修改JVM内存大小:


情况一:解压版本的Tomcat, 要通过startup.bat启动tomcat才能加载配置


要添加在tomcat 的bin 下catalina.bat来添加内存在

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

增加下面命令:

1
2
3
4
5
6
7
set JAVA_OPTS=-server -Xms512m -Xmx600m -XX:PermSize=128m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -XX:SurvivorRatio=14 -XX:+UseParalledlOldGC
set JAVA_OPTS=-server -Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxNewSize=256m -XX:MaxPermSize=256m 
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m
set JAVA_OPTS="%JAVA_OPTS% -server -Xms800m -Xmx3072m -XX:PermSize=512m -XX:MaxNewSize=256m -XX:MaxPermSize=1024m"



另翻注(详细解释):

常见JVM参数配置汇总

堆设置

-Xms:初始堆大小


-Xmx:最大堆大小


-XX:NewSize=n:设置年轻代大小


-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4


-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:


Survivor=3:2,一个Survivor区占整个年轻代的1/5


-XX:MaxPermSize=n:设置持久代大小


收集器设置

-XX:+UseSerialGC:设置串行收集器


-XX:+UseParallelGC:设置并行收集器


-XX:+UseParalledlOldGC:设置并行年老代收集器


-XX:+UseConcMarkSweepGC:设置并发收集器


垃圾回收统计信息

-XX:+PrintGC


-XX:+PrintGCDetails


-XX:+PrintGCTimeStamps


-Xloggc:filename


并行收集器设置

-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。


-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间


-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)


并发收集器设置

-XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。


-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。








      本文转自ling118 51CTO博客,原文链接:http://blog.51cto.com/meiling/1655007,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值