Linux與Windows下tomcat內(nèi)存設(shè)置
Linux下修改JVM內(nèi)存大小:
要添加在tomcat 的bin 下catalina.sh文件中,找到cygwin=false,在這一行的前面加入?yún)?shù),具體如下# vi TOMCAT_HOME/bin/catalina.sh(默認(rèn)文件內(nèi)容)
以下是自己設(shè)置的另外增加一個(gè)setenv.sh文件來設(shè)置tomcat內(nèi)存,給文件加上執(zhí)行權(quán)限
#vi /opt/app/tomcat6/bin/setenv.shexport 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.shJAVA_OPTS="-server -Xms512m -Xmx1024m -XX:MaxNewSize=512m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:SurvivorRatio=14 -XX:+UseParallelOldGC"
jvm參數(shù)說明:
-server 一定要作為第一個(gè)參數(shù),啟用JDK的server版本,在多個(gè)CPU時(shí)性能佳
-Xms java Heap初始大小。 默認(rèn)是物理內(nèi)存的1/64。
-Xmx java heap最大值。建議均設(shè)為物理內(nèi)存的80%。不可超過物理內(nèi)存。
-Xmn java heap最小值,一般設(shè)置為Xmx的3、4分之一。
-XX:PermSize 設(shè)定內(nèi)存的永久保存區(qū)初始大小,缺省值為64M。
-XX:MaxPermSize 設(shè)定內(nèi)存的永久保存區(qū)最大大小,缺省值為64M。
-XX:SurvivorRatio=2 生還者池的大小,默認(rèn)是2。如果垃圾回收變成了瓶頸,您可以嘗試定制生成池設(shè)置
-XX:NewSize 新生成的池的初始大小。 缺省值為2M。
-XX:MaxNewSize 新生成的池的最大大小。 缺省值為32M。
+XX:AggressiveHeap 讓jvm忽略Xmx參數(shù),瘋狂地吃完一個(gè)G物理內(nèi)存,再吃盡一個(gè)G的swap。
-Xss 每個(gè)線程的Stack大小
-verbose:gc 現(xiàn)實(shí)垃圾收集信息
-Xloggc:gc.log 指定垃圾收集日志文件
-XX:+UseParNewGC 縮短minor收集的時(shí)間
-XX:+UseConcMarkSweepGC 縮短major收集的時(shí)間
-XX:userParNewGC 可用來設(shè)置并行收集(多CPU)
-XX:ParallelGCThreads 可用來增加并行度(多CPU)
-XX:UseParallelGC 設(shè)置后可以使用并行清除收集器(多CPU)
-XX:+UseParallelOldGC:配置年老代垃圾收集方式為并行收集。JDK6.0支持對(duì)年老代并行收集。
Windows下修改JVM內(nèi)存大小:
情況一:解壓版本的Tomcat, 要通過startup.bat啟動(dòng)tomcat才能加載配置
要添加在tomcat 的bin 下catalina.bat 里rem Guess CATALINA_HOME if not defined
set CURRENT_DIR=%cd%后面添加:
set JAVA_OPTS="-server -Xms800m -Xmx3072m -XX:PermSize=512m -XX:MaxNewSize=256m -XX:MaxPermSize=1024m"
另翻注(詳細(xì)解釋):
常見JVM參數(shù)配置匯總
▼堆設(shè)置
-Xms:初始堆大小
-Xmx:最大堆大小
-XX:NewSize=n:設(shè)置年輕代大小
-XX:NewRatio=n:設(shè)置年輕代和年老代的比值。如:為3,表示年輕代與年老代比值為1:3,年輕代占整個(gè)年輕代年老代和的1/4
-XX:SurvivorRatio=n:年輕代中Eden區(qū)與兩個(gè)Survivor區(qū)的比值。注意Survivor區(qū)有兩個(gè)。如:3,表示Eden:
Survivor=3:2,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/5
-XX:MaxPermSize=n:設(shè)置持久代大小
▼收集器設(shè)置
-XX:+UseSerialGC:設(shè)置串行收集器
-XX:+UseParallelGC:設(shè)置并行收集器
-XX:+UseParalledlOldGC:設(shè)置并行年老代收集器
-XX:+UseConcMarkSweepGC:設(shè)置并發(fā)收集器
▼垃圾回收統(tǒng)計(jì)信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
▼并行收集器設(shè)置
-XX:ParallelGCThreads=n:設(shè)置并行收集器收集時(shí)使用的CPU數(shù)。并行收集線程數(shù)。
-XX:MaxGCPauseMillis=n:設(shè)置并行收集最大暫停時(shí)間
-XX:GCTimeRatio=n:設(shè)置垃圾回收時(shí)間占程序運(yùn)行時(shí)間的百分比。公式為1/(1+n)
▼并發(fā)收集器設(shè)置
-XX:+CMSIncrementalMode:設(shè)置為增量模式。適用于單CPU情況。
-XX:ParallelGCThreads=n:設(shè)置并發(fā)收集器年輕代收集方式為并行收集時(shí),使用的CPU數(shù)。并行收集線程數(shù)。