高級程序員必不可少的技能,這個也是高薪必問的問題javascript
可以有效經過 JVM 調優提高系統性能的人每每被人們冠以」大牛」、」大師」之類的稱呼。css
-XX:+PrintGC -XX:+PrintGCCause -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/Users/aihe/idea/idea_gc.txt -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/issue_error
這一步gceasy.io網站上,直接就給了提示,增長metaspace的大小,在參數設置中,咱們沒有看到設置metaspace,那麼下面一步作調整。html
-Xmx2048m -Xms2048m -Xmn1024m -XX:MetaspaceSize=512m
此次參數變動爲以下:java
-Dfile.encoding=UTF-8 -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:-OmitStackTraceInFastThrow -Xverify:none -XX:+PrintGC -XX:+PrintGCCause -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/Users/aihe/idea/idea_gc.txt -XX:+DisableExplicitGC -Xmx2048m -Xms2048m -Xmn1024m -XX:MetaspaceSize=521m
想查看每一個具體的屬性含義能夠用:
java -XX:+PrintFlagsFinal或者去Oracle文檔查看詳細介紹程序員
新生代,老年代分配的空間,以及使用的內存峯值
併發
吞吐量及暫停時間:oracle
-XX:+UseG1GC
看起來吞吐量也下降了,暫停時間也增長了。
ide
這個參數不是硬性要求,JVM只是會盡最大的努力來達到這個要求,可是仍是可能超過這個值性能
-XX:MaxGCPauseMillis=50
貌似沒啥變化,就不貼圖了
新增參數,初始堆佔用百分比:網站
-XX:InitiatingHeapOccupancyPercent=50
看起來效果也不是特別好
增長垃圾收集器的併發線程數:,效果反而更差了。
-XX:ParallelGCThreads=20 //設置並行回收時GC的線程數 -XX:ConcGCThreads=5
G1的垃圾收集器階段:
-XX:+UseConcMarkSweepGC
效果好些仍是不如最初的狀態
-XX:+UseParallelGC
對JVM這塊不夠大的指標就看吞吐量和暫停時間,更細的指標須要你們一塊兒探索