GC
- -XX:+PrintGC 打印GC日志
- -XX:+PrintGCDetails 打印詳細的GC日志
- -Xloggc:/var/gc.log 將GC日志打印在根目錄的var文件夾下的gc.log文件中
class
- -verbose:class 打印類加載和卸載信息
堆內存
- -Xmx2048m 最大堆內存
- -Xms2048m 最小堆內存
- -Xmn512m 新生代內存
- -XX:SurvivorRatio 值為eden/from=eden/to
- -XX:+HeapDumpOnOutOfMemoryError 在內存溢出時導出整個堆信息
- -XX:HeapDumpPath=/var/heap.dump 指定導出堆的存放路徑
方法區
- -XX:PermSize=50m 方法區大小
- -XX:MaxPermSize=50m 方法區最大大小
Metaspace
- -XX:MaxMetaspaceSize 指定元空間的大小,默認情況下,只受限於系統內存大小
棧
- -Xss1m
直接內存
- -XX:MaxDirectMemorySize 最大可用直接內存,默認最大值為-Xmx,直接內存使用量達到該值時,觸發垃圾回收
垃圾回收器
- -XX:UseSerialGC 使用serial/serial old垃圾回收器
- -XX:PrintGCApplicationStoppedTime:查看STW時間
- -XX:UseParNewGC 使用parNew/serial old
- -XX:ParallelGCThreads parNew的GC線程數
Parallel
- -XX:+UseParallelGC 使用Parallel Scavenge/serial Old //TODO
- -XX:+UseParallelOldGC 使用Parallel Scavenge/Parallel Old
- -XX:GCTimeRatio:直接設置吞吐量大小,假設設為19,則允許的最大GC時間占總時間的1/(1+19),默認值為99,即1/(1+99)
- -XX:MaxGCPauseMillis:最大GC停頓時間,該參數並非越小越好
- -XX:+UseAdaptiveSizePolicy:開啟該參數,-Xmn/-XX:SurvivorRatio/-XX:PretenureSizeThreshold這些參數就不起作用了,虛擬機會自動收集監控信息,動態調整這些參數以提供最合適的的停頓時間或者最大的吞吐量(GC自適應調節策略),而我們需要設置的就是-Xmx,-XX:+UseParallelOldGC或-XX:GCTimeRatio兩個參數就好(當然-Xms也指定上與-Xmx相同就好)
CMS
- -XX:+UseConcMarkSweepGC 使用parNew/CMS
- -XX:CMSInitiatingOccupancyFraction 指定當年老代空間滿了多少后進行垃圾回收。默認68,即68%
- -XX:+UseCMSCompactAtFullCollection (默認是開啟的)在CMS收集器頂不住要進行FullGC時開啟內存碎片整理過程,該過程需要STW
- -XX:CMSFullGCsBeforeCompaction 指定多少次FullGC后才進行整理
- -XX:ParallelCMSThreads 指定CMS回收線程的數量,默認為:(CPU數量+3)/4
- -XX:+CMSPermGenSweepingEnabled與-XX:+CMSClassUnloadingEnabled 使用CMS進行方法區的回收
G1
- -XX:+UseG1GC 使用G1
對象進入年老代
- -XX:MaxTenuringThreshold=15 復制過15次后
- -XX:PretenureSizeThreshold=1000 大於1000字節的對象直接進入年老代
JIT
- -XX:CounterHalfLifeTime 半衰周期
- -XX:CompileThreshold 默認server模式是10000,即在半衰周期內方法調用次數達到10000次,將該方法編譯為機器碼
- -XX:-UseCounterDecay 關閉上述機制,即半衰周期的無窮大
- -XX:OnStackReplacePercent 用於計算循環體執行的次數,server模式下通過該值算出來的回邊數是10700,即循環體執行10700次時便以為機器碼
