這是tomcat下面catalina.bat文件的部分代碼
@echo off if "%OS%" == "Windows_NT" setlocal set CATALINA_HOME=D:\Tomcat5_websearch set HEAP=-Xms4096m -Xmx4096m set PERMANENT_G=-XX:PermSize=128m -XX:MaxPermSize=128m set YOUNG_G=-Xmn600m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=5 set CMS_GC=-XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=15 set NEW_GC=-XX:+UseParNewGC -XX:ParallelGCThreads=4 set RMIGC=-Dsun.rmi.dgc.server.gcInterval=86400000 -Dsun.rmi.dgc.client.gcInterval=86400000 set DUMP=-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%CATALINA_HOME%/logs/dump_tomcat.hprof set GCLOG=-Xloggc:%CATALINA_HOME%/logs/gc_tomcat.log -XX:+PrintGCTimeStamps set JAVA_OPTS=-server %HEAP% %PERMANENT_G% %YOUNG_G% %CMS_GC% %NEW_GC% %RMIGC% %DUMP% %GCLOG%
參數設置放在上面這個位置,這是我們系統的配置
//jvm最大可用內存
set HEAP=-Xms4096m -Xmx4096m
//這里是對老年代內存的配置
set PERMANENT_G=-XX:PermSize=128m -XX:MaxPermSize=128m
//這里是對新生代內存的配置
-Xmn的heap大小
-XX:SurvivorRatio年輕代中Eden區與兩個Survivor區的比值,8表示Eden:Survivor=8:2,,一個Survivor區占整個年輕代的1/10
-XX:MaxTenuringThreshold 設置垃圾最大年齡 如果設置為0的話,則年輕代對象不經過Survivor區,直接進入年老代。對於年老代比較多的應用,可以提高效率。如果將此值設置為一個較大值,則年輕代對象會在Survivor區進行多次復制,這樣可以增加對象再年輕代的存活時間,
set YOUNG_G=-Xmn600m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=5
// 這里是對老生代采用並發標記收集器進行垃圾回收的配置 CMS_GC:ConcurrentMarkSweep 並發標記掃描收集器
+UseConcMarkSweepGC 對老生代采用並發標記交換算法進行GC
+DisableExplicitGC 禁止調用System.gc();但jvm的gc仍然有效
+CMSParallelRemarkEnabled 在使用 UseParNewGC 的情況下 , 盡量減少 mark 的時間
+UseCMSCompactAtFullCollection 打開對年老代的壓縮。可能會影響性能,但是可以消除碎片
CMSFullGCsBeforeCompaction=15 這里設置15次Full GC后,對年老代進行壓縮
CMS:ConcurrentMarkSweep 並發標記掃描
set CMS_GC=-XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=15
// 這里是對新生代采用並行收集器進行垃圾回收的配置 parallel collector 並行收集器
+UseParNewGC 指定新生代使用parallel collector
ParallelGCThreads 線程數
set NEW_GC=-XX:+UseParNewGC -XX:ParallelGCThreads=4
// 這里是對RMI客戶端和服務端的垃圾回收的間隔時間設置
Dsun.rmi.dgc.server.gcInterval 設置rmi的gc間隔時間,默認是每分鍾進行一次gc,86400000是24小時gc一次
set RMIGC=-Dsun.rmi.dgc.server.gcInterval=86400000 -Dsun.rmi.dgc.client.gcInterval=86400000
// 這里是對當首次遭遇OOM時導出此時堆中相關信息的配置
HeapDumpOnOutOfMemoryError 當首次遭遇OOM時導出此時堆中相關信息
HeapDumpPath 指定導出堆信息時的路徑或文件名
set DUMP=-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%CATALINA_HOME%/logs/dump_tomcat.hprof
// 這里是對tomcat垃圾回收日志的配置
set GCLOG=-Xloggc:%CATALINA_HOME%/logs/gc_tomcat.log -XX:+PrintGCTimeStamps
//把以上配置的參數全部設置進去
set JAVA_OPTS=-server %HEAP% %PERMANENT_G% %YOUNG_G% %CMS_GC% %NEW_GC% %RMIGC% %DUMP% %GCLOG%
基於jdk1.6
Sun JDK 16 GC ( Garbage Collector):http://www.docin.com/p-417999249.html
這篇博客介紹很詳細: http://www.open-open.com/lib/view/open1324736648468.html