1.與串行回收器相關的參數
- -XX:+UseSerialGC:在新生代和老年代使用串行收集器
- -XX:SurvivorRatio:設置eden區大小和survivor區大小的比例
- -XX:PretenureSizeThreshold:設置大對象直接進入老年代的閾值。當對象的大小超過這個值時,將直接在老年代分配。
- -XX:MaxTenuringThreshold:設置對象進入老年代的年齡的最大值。每一次Minor GC后,對象年齡就加1。任何大於這個年齡的對象,一定會進入老年代。
2.與並行GC相關的參數
- -XX:+UseParNewGC:在新生代使用並行收集器
- -XX:+UseParallelOldGC:老年代使用並行回收收集器
- -XX:ParallelGCThreads:設置用於垃圾回收的線程數。通常情況下可以和CPU數量相等,但在CPU數量較多的情況下,設置相對較小的數值也是合理的。
- -XX:MaxGCPauseMillis:設置最大垃圾收集停頓時間。他的值是一個大於0的整數。收集器在工作時,會調整Java堆大小或者其他參數,盡可能把停頓時間控制在MaxGCPauseMillis以內。
- -XX:GCTimeRatio:設置吞吐量大小。它是0-100的整數。假設GCTimeRatio的值為n,那么系統將花費不超過1/(1+n)的時間用於垃圾收集。
- -XX:+UseAdaptiveSizePolicy:打開自適應GC策略。在這種模式下,新生代的大小、eden和survivor的比例、晉升老年代的對象年齡等參數會被自動調整,已達到在堆大小、吞吐量和停頓時間之間的平衡點。
3.與CMS回收期相關的參數
- -XX:+UseConcMarkSweepGC:新生代使用並行收集器,老年代使用CMS+串行收集器
- -XX:ParallelCMSThreads:設定CMS的線程數量
- -XX:CMSInitiatingOccupancyFraction:設置CMS收集器在老年代空間被使用多少后觸發,默認為68%
- -XX:+UseCMSCompactAtFullCollection:設置CMS收集器完成垃圾收集后是否要進行一次內存碎片的整理
- -XX:CMSFullGCsBeforeCompaction:設定進行多少次CMS垃圾回收后,進行一次內存壓縮
- -XX:+CMSClassUnloadingEnabled:允許對類元數據區進行回收
- -XX:CMSInitiatingPermOccupancyFraction:當永久區占用率達到這一百分比時,啟動CMS回收(前提是-XX:+CMSClassUnloadingEnabled激活了)
- -XX:UseCMSInitiatingOccupancyOnlyn:表示只在到達閾值的時候才進行CMS回收
- -XX:+CMSIncrementalMode:使用增量模式,比較適合單CPU。增量模式在JDK 8中標記為廢棄,並將在JDK 9中徹底移除。
4.與G1回收期相關的參數
- -XX:+UseG1GC:使用G1回收器
- -XX:MaxGCPauseMillis:設置最大垃圾收集停頓時間
- -XX:GCPauseIntervalMillis:設置停頓間隔時間
5.TLAB相關
- -XX:+UseTLAB:開啟TLAB分配
- -XX:+PrintTLAB:打印TLAB相關分配信息
- -XX:TLABSize:設置TLAB大小
- -XX:+ResizeTLAB:自動調整TLAB大小
6.其他參數
- -XX:+DisableExplicitGC:禁用顯式GC
- -XX:+ExplicitGCInvokesConcurrent:使用並發方式處理顯式GC