
-XX:+PrintCommandLineFlags可以在程序運行前打印出用戶手動設置或是JVM自動設置的XX參數(shù)。-XX:+PrintFlagsInitial打印出所有XX參數(shù)的默認值。-XX:+PrintFlagsFinal打印出XX參數(shù)在運行程序時生效的值。-XX:+PrintVMOptions打印JVM的參數(shù)。-Xss1m設置每個線程棧大小為1m,等價于-XX:ThreadStackSize=1m。-Xms2048m設置JVM初始堆內(nèi)存為2048m,等價于-XX:InitialHeapSize。-Xmx2048設置JVM大堆內(nèi)存為2018m,等價于-XX:MaxHeapSize。-Xmn1g設置年輕代大小為1g,官方推薦配置為整個堆大小的3/8。-XX:NewSize=1024m設置年輕代初始值為1024m。-XXMaxNewSize=1024m設置年輕代大值為1024m。3、4、5的關系官方文檔描述是 The -XX:NewSize option is equivalent to -Xmn.
Instead of the -Xmn option to set both the initial and maximum size of the heap for the young generation, you can use -XX:NewSize to set the initial size and -XX:MaxNewSize to set the maximum size.
-XX:SurvivorRatio=8設置年輕代中Eden區(qū)和一個survivor區(qū)的比值,默認為8。-XX:+UseAdaptiveSizePolicy開啟自動選擇各區(qū)大小比例UseAdaptiveSizePolicy默認是開啟的,此時SurvivorRatio=8是不生效的,將UseAdaptiveSizePolicy關閉后,設置SurvivorRatio=8才會生效,Eden:survivor=8:1
-XX:NewRatio=2設置老年代和年輕代(包括1個Eden和2個Survivor)的比值,默認為2,表示年輕代占整個堆空間的1/3,老年代占2/3。-XX:PretenureSizeThreshold=1024大于此閥值的對象直接分配在老年代,默認值的單位是字節(jié),自行設置時也可以寫成1m,只對Serial、ParNew收集器有效。-XX:MaxTenuringThreshold=15默認值是15,年輕代每次MinorGC后,還存活的對象年齡+1,當對象的年齡大于設置的這個值時就進入老年代。-XX:-PrintTenuringDistribution,讓JVM在每次MinorGC后打印出當前使用的Survivor中對象的年齡分布,默認是關閉的。-XX:TargetSurvivorRatio表示MinorGC結束后Survivor中占用空間的期望比例。-XX:PermSize=128m設置永久代初始值為128m。-XX:MaxPermSize=128m設置永久代大值為128m。-XX:MetaspaceSize設置元空間初始大小,默認是21807104個字節(jié),約為21m。-XX:MaxMetaspaceSize設置元空間大值,默認無限制。-XX:+UseCompressedOops開啟壓縮對象指針,默認開啟。-XX:+UseCompressedClassPointers開啟壓縮類指針,默認開啟。-XX:CompressedClassSpaceSize設置Klass Metaspace大小,默認1g。1.-XX:MaxDirectMemorySize指定直接內(nèi)存容量,默認值是0。
OOM相關設置官方文檔描述
Sets the maximum total size (in bytes) of the New I/O (the java.nio package) direct-buffer allocations. Append the letter k or K to indicate kilobytes, m or M to indicate megabytes, g or G to indicate gigabytes. By default, the size is set to 0, meaning that the JVM chooses the size for NIO direct-buffer allocations automatically.
-XX:+HeapDumpOnOutOfMemoryError開啟后,在出現(xiàn)OOM時生成dump文件。-XX:+HeapDumpBeforeFullGC開啟后,在出現(xiàn)FullGC前生成dump文件。-XX:HeapDumpPath=指定dump文件存儲路徑。筆者另一篇文章JVM監(jiān)控常用的6個命令行工具有詳細介紹使用方法。
-XX:OnOutOfMemoryError當發(fā)生OOM時,執(zhí)行指定腳本。eg:-XX:OnOutOfMemoryError=/opt/Server/restart.sh-XX:+UseSerialGC指定年輕代和老年代都是用串行收集器。對應年輕代使用Serial GC,老年代使用Serial Old GC。1.-XX:+UseParNewGC指定年輕代使用ParNew并行收集器,不影響老年代。
2.-XX:ParallelGCThreads限制1中并行線程數(shù)量,默認開啟和CPU數(shù)量相同的線程數(shù)。
-XX:+UseParallelGC開啟年輕代使用Parallel并行收集器執(zhí)行內(nèi)存回收任務。-XX:+UseParallelOldGC開啟老年代使用并行回收器。Parallel在JDK8中默認開啟,1和2配套使用,開啟其中一個參數(shù),另一個也會被開啟。
-XX:ParallelGCThreads設置年輕代并行收集器的線程數(shù)。一般和CPU數(shù)量相等,以避免過多的線程數(shù)影響垃圾收集性能。在默認情況下,當CPU數(shù)量小于等于8個,ParallelGCThreads的值等于CPU數(shù)量。
當CUP數(shù)量大于8個,ParallelGCThreads的值等于 3 + 5 * CPU_COUNT / 8。
-XX:MaxGCPauseMillis設置垃圾收集器大停頓時間(STW),單位是毫秒。-XX:GCTimeRatio垃圾收集時間占總時間的比例 1 / (N + 1),取值范圍(0, 100),默認值99,也就是垃圾回收時間不超過1%。-XX:+UseAdaptiveSizePolicy設置PS(Parallel Scavenge)收集器開啟自適應調(diào)節(jié)策略。此種模式下,年輕代的大小、Eden和Survivor的比例,晉升老年代的對象年齡等參數(shù)會被自動調(diào)整,以達到在堆大小、吞吐量和停頓時間的平衡點。使用此種模式僅需設置虛擬機大堆,目標的吞吐量(GCTimeRatio)和停頓時間(MaxGCPauseMillis)。
-XX:+UseConcMarkSweepGC開啟使用CMS收集器進行垃圾回收。開啟該參數(shù)會自動將-XX:+UseParNewGC開啟,即:年輕代(ParNew)+ 老年代(CMS)+ Serial Old 組合。
-XX:CMSLnitiatingOccupanyFraction設置堆內(nèi)存使用率閥值,到達該閥值便開始回收。-XX:+UseCMSCompactAtFullCollection默認開啟,在進行Full GC時開啟內(nèi)存碎的合并整理過程,此過程無法并發(fā),會導致停頓時間變長。-XX:CMSFullGCsBeforeCompaction此參數(shù)的作用是CMS收集器在執(zhí)行過若干次不整理空間的FullGC之后,下一次進入FullGC前會先進行碎片整理,默認值為0,表示每次進入Full GC時都進行碎片整理。官方文檔:https://docs.oracle.com/en/java/javase/13/docs/specs/man/java.html
-XX:+UseG1GC開啟G1收集器。-XX:G1HeapRegionSize設置每個Region的大小,值是2的N次冪,范圍1m ~ 32m,目標是根據(jù)最小的Java堆劃分出月2048個區(qū)域。-XX:MaxGCPauseMillis設置期望到達的大GC停頓時間,默認值是200ms。-XX:ParallelGCThreads設置STW時GC線程數(shù),大值為8。-XX:ConcGCThreads設置并發(fā)標記的線程數(shù),參考值:ParallelGCThreads 的1/4左右。-XX:InitiatingHeapOccupancyPercent設置觸發(fā)并發(fā)GC的堆占用率閥值,默認值為45%。-XX:G1NewSizePercent-XX:G1MaxNewSizePercent設置新生代占用整堆內(nèi)存的最小百分比(默認5%)、大百分比(默認60%)。-XX:G1ReservePercent保留內(nèi)存區(qū)域,防止survivor中的to區(qū)溢出,默認值10%。-verbose:gc輸出簡化gc日志信息。-XX:+PrintGC等價于-verbose:gc。-XX:+PrintGCDetails在發(fā)生垃圾回收是打印內(nèi)存回收詳細的日志,并在進程退出時輸出當前內(nèi)存各區(qū)域的使用情況。-XX:+PrintGCTimeStamps輸出GC發(fā)生時的時間戳,要配合-XX:+PrintGCDetails一起使用。-XX:+PrintGCDateStamps輸出GC發(fā)生時的時間戳(以日期的形式展示),要配合-XX:+PrintGCDetails一起使用。-XX:+PrintHeapAtGC每一次GC前、GC后都打印堆信息。-Xloggc:把GC日志寫到文件中。你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站名稱:常用的JVM參數(shù)設置-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://chinadenli.net/article24/cohije.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App設計、企業(yè)建站、服務器托管、App開發(fā)、定制開發(fā)、網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容