Linux: 在/usr/local/apache-tomcat-5.5.23/bin 目录下的catalina.sh添加: JAVA_OPTS='-Xms512m -Xmx1024m'要加“m”说明是MB,否则就是KB了,在启动tomcat时会 报内存不足。 -Xms:初始值-Xmx:最大值-Xmn:最小值
说了这么理论知识不如直接来点儿实在的,下面贴出我的tomcat JVM调优参数并对参数做出介绍: 此配置仅是测试,非正式环境配置,请自行根据项目情况进行配置 JAVA_OPTS="-Xms1024m -Xmx1024m -Xmn384m -Xss256k -XX:MaxGCPauseMillis=100 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -Djava.awt.headless=true" 各项参数介绍: -Xmx1024m:设置JVM最大可用内存为1024M。 -Xms1024m:设置JVM促使内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xmn384m:设置年轻代大小为384m。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。 -Xss256k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。 -XX:MaxGCPauseMillis=100:每次年轻代垃圾回收的最长时间(最大暂停时间)单位是毫秒 -XX:+UseConcMarkSweepGC:设置年老代为并发收集。 -XX:CMSInitiatingOccupancyFraction=80: 使用cms作为垃圾回收使用80%后开始CMS收集 -XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除碎片 -XX:CMSFullGCsBeforeCompaction=0:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。