1. 程式人生 > >tomcat最大最小記憶體設定

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數。並行收集執行緒數。