jvm虛擬機調優裏面的相關參數

jvm參數詳細介紹

#默認初始堆內存
-Xms512m  
#最大堆內存 
-Xmx512m
#最小堆內存 (新生代大小)
-Xmn256m 
#棧最大深度大小)
-Xss256k
#(打印詳細的GC日誌)
-XX:+PrintGCDetails
#讓GC可以更快的執行。(只是JDK 5裏對GC新增加的參數)
-XX:+UseParallelGC
#G1收集器(或者垃圾優先收集器)的設計初衷是爲了儘量縮短處理超大堆(大於4GB)時產生的停頓。相對於CMS的優勢而言是內存碎片的產生率大大降低。
#PS:開啓G1收集器的方式
-XX:+UseG1GC
#去重字符串  開啓G1收集器的方式用
-XX:+UseStringDeduplication

#GC參數解析
#-XX:+UseSerialGC 使用串行回收器進行回收,這個參數會使新生代和老年代都使用串行回收器,新生代使用複製算法,老年代使用標記-整理算法。Serial收集器是最基本、歷史最悠久的收集器,它是一個單線程收集器。一旦回收器開始運行時,整個系統都要停止。Client模式下默認開啓,其他模式默認關閉。
#-XX:+UseParallelOldGC: 新生代和老年代都使用並行收集器。打印出的GC會帶PSYoungGen、ParOldGen關鍵字。
#XX:+UseConcMarkSweepGC:Concurrent Mark Sweep 併發標記清除,即使用CMS收集器。它是和應用程序線程一起執行,相對於Stop The World來說虛擬機停頓時間較少。停頓減少,吞吐量會降低。它使用的是 標記清除算法,運作過程爲四個步驟,分別是 初始標記—併發標識—重新標記—併發清除。它是老年代的收集算法,新生代使用ParNew收集算法。默認關閉CMS收集器的缺點是對服務器CPU資源較爲敏感,在併發標記時會降低吞吐量。它使用的標記清除算法也會產生大量空間碎片,空間碎片的存在會加大Full GC的頻率,雖然老年代還有足夠的內存,但是因爲內存空間連續,不得不進行Full GC。
#-XX:+UseConcMarkSweepGC 指定使用的垃圾收集器,這裏使用CMS收集器
#-XX:+ UseCMSCompactAtFullCollection:Full GC後,進行一次整理,整理過程是獨佔的,會引起停頓時間變長。僅在使用CMS收集器時生效。
#-XX:ParallelCMSThreads:設置並行GC時進行內存回收的線程數量
#-XX:PreternureSizeThreshold:直接晉升老年代的對象大小,設置了這個參數後,大於這個參數的對象直接在老年代進行分配。
#UseParNewGC:併發串行收集器,它是工作在新生代的垃圾收集器,它只是將串行收集器多線程化,除了這個並沒有太多創新之處,而且它們共用了相當多的代碼。它與串行收集器一樣,也是獨佔式收集器,在收集過程中,應用程序會全部暫停。但它卻是許多運行在Server模式下的虛擬機中首選的新生代收集器,其中有一個與性能無關但很重要的原因是,除了Serial收集器外,目前只有它能與CMS收集器配合工作。
#UseParallelGC:並行收集器,同時運行在多個cpu之間,物理上的並行收集器,跟上面的收集器一樣也是獨佔式的,但是它最大化的提高程序吞吐量,同時縮短程序停頓時間,另外它不能與CMS收集器配合工作。

#.-XX:CMSInitiatingOccupancyFraction=70 和-XX:+UseCMSInitiatingOccupancyOnly
#  這兩個設置一般配合使用,一般用於『降低CMS GC頻率或者增加頻率、減少GC時長』的需求
# -XX:CMSInitiatingOccupancyFraction=70 是指設定CMS在對內存佔用率達到70%的時候開始GC(因爲CMS會有浮動垃圾,所以一般都較早啓動GC);
#-XX:+UseCMSInitiatingOccupancyOnly 只是用設定的回收閾值(上面指定的70%),如果不指定,JVM僅在第一次使用設定值,後續則自動調整.

#JVM初始分配的非堆內存
-XX:PermSize=64M 
#JVM最大允許分配的非堆內存,按需分配
-XX:MaxPermSize=128M 
#設置GC的最大暫停時間爲200ms。
-XX:MaxGCPauseMillis=200
#(元空間默認大小)
-XX:MetaspaceSize=128m 
#(元空間最大大小)
-XX:MaxMetaspaceSize=128m 
#(新生代分區比例 8:2)
-XX:SurvivorRatio=8 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章