Linux與Windows下tomcat內存設置
Linux下修改JVM內存大小:
要添加在tomcat 的bin 下catalina.sh文件中,找到cygwin=false,在這一行的前面加入參數,具體如下# vi TOMCAT_HOME/bin/catalina.sh(默認文件內容)
以下是自己設置的另外增加一個setenv.sh文件來設置tomcat內存,給文件加上執行權限
#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參數說明:
-server 一定要作為第一個參數,啟用JDK的server版本,在多個CPU時性能佳
-Xms java Heap初始大小。 默認是物理內存的1/64。
-Xmx java heap最大值。建議均設為物理內存的80%。不可超過物理內存。
-Xmn java heap最小值,一般設置為Xmx的3、4分之一。
-XX:PermSize 設定內存的永久保存區初始大小,缺省值為64M。
-XX:MaxPermSize 設定內存的永久保存區最大大小,缺省值為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支持對年老代并行收集。
Windows下修改JVM內存大小:
情況一:解壓版本的Tomcat, 要通過startup.bat啟動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"
另翻注(詳細解釋):
常見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數。并行收集線程數。