JVM實戰調優jvm
jvm不會開啓記錄GC日誌,會影響性能,調優以後,就會關掉GC日誌性能
JVM調優主要就是調整下面兩個指標 減小FGC執行次數,減小FGC執行時間網站
停頓時間:垃圾收集器作垃圾回收中斷應用執行的時間。-XX:MaxGCPauseMillisspa
吞吐量:垃圾收集的時間和總時間的佔比:1/(1+n),吞吐量爲1-1/(1+n)。-XX:GCTimeRatio=n線程
GC調優步驟:日誌
1.打印GC日誌內存
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps(在GC日誌裏面打印出詳細時間戳) -XX:+PrintGCDateStamps -Xloggc:./gc.logrem
打印GC日誌輸出到文件內get
Tomcat 則直接加在JAVA_OPTS變量裏it
分析日誌獲得關鍵性指標
分析GC緣由,調優JVM參數
1.Parallel Scavenge收集器
分析日誌
第一次調優:設置Metaspace大小,增大元空間大小-XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=64M (gceasy推薦調整,元空間大小能夠設置的大一些)
第二次調優:增大年輕代動態擴容增量,默認是20%,能夠減小young gc:-XX:YoungGenerationSizeIncrement=30
2.配置CMS收集器
-XX:+UseConcMarkSweepGC
3.配置G1收集器
-XX:+UseG1GC
-XX:InitiatingHeapOccupancyPercen:老年代佔用空間超過整堆比IHOP閾值(默認45%),超過則執行混合收集
調優:添加吞吐量和停頓時間參數:-XX:GCTimeRatio=99 -XX:MaxGCPauseMillis=10
使用https://gceasy.io/上傳gc日誌,該網站會分析日誌文件,給出調優建議
GC經常使用參數
堆棧設置
-Xss:每一個線程的棧大小
-Xms:初始堆大小,默認物理內存的1/64
-Xmx:最大堆大小,默認物理內存的1/4
-Xmn:新生代大小
-XX:NewSize:設置新生代初始大小
-XX:NewRatio:默認2表示新生代佔老年代的1/2,佔整個堆內存的1/3
並行收集器設置:
-XX:YoungGenerationSizeIncrement:年輕代gc後擴容比例,默認是20(%)