-XX:+PrintCommandLineFlags 打印出JVM運行時的各種的各項配置參數
-verbose:gc 發生GC時,打印出GC日志
-XX:+printGC 發生GC時,打印出GC日志
-XX:+PrintGCDetails 打印GC的詳細日志,並且在程序運行結束是會打印出JVM的內存占用情況
-XX:+PrintGCDateStamps 打印GC發生的時間
-XX:+PrintGCTimeStamps 打印GC發生的時間,相對JVM啟動的時間
-Xloggc:d:\\gc.log gc日式默認是打印在控制台,添加這個參數可以指定GC日志的輸出位置,指定后控制台就無法查看GC日志了
-XX:+PrintHeapAtGC 每次一次GC后,都打印堆信息
-XX:+TraceClassLoading 監控類的加載
-Xmx 指定最大堆內存
–Xms 指定最小堆內存
-Xmn 設置新生代大小
-XX:NewRatio 新生代(eden+2*s)和老年代(不包含永久區)的比值 4 表示 新生代:老年代=1:4,即年輕代占堆的1/5
-XX:SurvivorRatio 設置兩個Survivor區和eden的比 8表示 兩個Survivor :eden=2:8,即一個Survivor占年輕代的1/10
-XX:+HeapDumpOnOutOfMemoryError OOM時導出堆到文件
-XX:HeapDumpPath=d:/a.dump 導出OOM的路徑
-XX:OnOutOfMemoryError 在OOM時,執行一個腳本"-XX:OnOutOfMemoryError=D:/tools/jdk1.7_40/bin/printstack.bat %p“當程序OOM時,在D:/a.txt中將會生成線程的dump可以在OOM時,發送郵件,甚至是重啟程序
XX:PermSize 設置永久區的初始空間
-XX:MaxPermSize 設置永久區最大空間
-Xss 指定棧的大小
-XX:+UseSerialGC 新生代、老年代使用串行回收,新生代復制算法,老年代標記-壓縮
-XX:+UseParNewGC 新生代並行,老年代串行,Serial收集器新生代的並行版本,復制算法,多線程,需要多核支持
-XX:ParallelGCThreads 限制線程數量
-XX:MaxGCPauseMills 最大停頓時間,單位毫秒,GC盡力保證回收時間不超過設定值
-XX:GCTimeRatio 0-100的取值范圍,垃圾收集時間占總時間的比 默認99,即最大允許1%時間做GC
這兩個參數是矛盾的。因為停頓時間和吞吐量不可能同時調優
-XX:+UseConcMarkSweepGC Concurrent Mark Sweep 並發標記清除,老年代收集器(新生代使用ParNew)
-XX:CMSInitiatingOccupancyFraction設置觸發GC的閾值
-XX:+ UseCMSCompactAtFullCollection Full GC后,進行一次整理,整理過程是獨占的,會引起停頓時間變長
-XX:+CMSFullGCsBeforeCompaction 設置進行幾次Full GC后,進行一次碎片整理
-XX:ParallelCMSThreads 設定CMS的線程數量
-XX:+CMSClassUnloadingEnabled:允許對類元數據進行回收
-XX:UseCMSInitiatingOccupancyOnly:表示只在到達閥值的時候,才進行CMS回收
-XX:PretenureSizeThreshold參數,對象的判定標准,大於這個值的對象直接分配在老年代,默認是0,所有對象都優先在eden區上分配,PretenureSizeThreshold參數只對Serial和ParNew兩款收集器有效,Parallel Scavenge收集器不認識這個參數,Parallel Scavenge收集器一般並不需要設置。