是指設(shè)定程序啟動(dòng)時(shí)占用內(nèi)存大小帖池。一般來講年扩,大點(diǎn),程序會(huì)啟動(dòng)的快一點(diǎn),但是也可能會(huì)導(dǎo)致機(jī)器暫時(shí)間變慢
-Xms7168m
是指設(shè)定程序運(yùn)行期間最大可占用的內(nèi)存大小替蔬。如果程序運(yùn)行需要占用更多的內(nèi)存告私,超出了這個(gè)設(shè)置值,就會(huì)拋出OutOfMemory異常
-Xmx7168m
設(shè)置年輕代大小承桥。整個(gè)JVM內(nèi)存大小=年輕代大小 + 年老代大小 + 持久代大小驻粟。持久代一般固定大小為64m,所以增大年輕代后凶异,將會(huì)減小年老代大小蜀撑。此值對(duì)系統(tǒng)性能影響較大,Sun官方推薦配置為整個(gè)堆的3/8
-Xmn2389m
設(shè)置年輕代中Eden區(qū)與Survivor區(qū)的大小比值剩彬。設(shè)置為4屯掖,則兩個(gè)Survivor區(qū)與一個(gè)Eden區(qū)的比值為2:4,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/6
-XX:SurvivorRatio=4
設(shè)置垃圾回收時(shí)間占程序運(yùn)行時(shí)間的百分比襟衰。公式為1/(1+n)
-XX:GCTimeRatio=19
設(shè)置并行收集器收集時(shí)使用的CPU數(shù)贴铜。并行收集線程數(shù)
-XX:ParallelGCThreads=10
這個(gè)參數(shù)作用是禁止代碼中顯示調(diào)用GC。代碼如何顯示調(diào)用GC呢瀑晒,通過System.gc()函數(shù)調(diào)用绍坝。如果加上了這個(gè)JVM啟動(dòng)參數(shù),那么代碼中調(diào)用System.gc()沒有任何效果苔悦,相當(dāng)于是沒有這行代碼一樣
-XX:+DisableExplicitGC
這個(gè)是原始類型的JAVA自帶的快速優(yōu)化
-XX:+UseFastAccessorMethods
用于設(shè)置metaspace區(qū)域的最大值轩褐,這個(gè)值可以通過mxbean中的MemoryPoolBean獲取到,如果這個(gè)參數(shù)沒有設(shè)置玖详,那么就是通過mxbean拿到的最大值是-1把介,表示無窮大
-XX:MaxMetaspaceSize=4096m
Metaspace擴(kuò)容時(shí)觸發(fā)FullGC的初始化閾值,也是最小的閾值蟋座,如果沒有配置拗踢,觸發(fā)FGC的閾值是21807104(約20.8m)
GC收集器會(huì)在發(fā)生對(duì)metaspace的回收會(huì),會(huì)計(jì)算新的_capacity_until_GC值向臀,以后發(fā)生FGC就跟MetaspaceSize沒有關(guān)系了
-XX:MetaspaceSize=512m
關(guān)閉虛擬機(jī)對(duì)class的垃圾回收功能
-Xnoclassgc
并行處理Reference巢墅,加快處理速度,縮短耗時(shí)券膀,默認(rèn)false
-XX:+ParallelRefProcEnabled
設(shè)置年老代為并發(fā)收集君纫,使用CMS內(nèi)存收集
-XX:+UseConcMarkSweepGC
設(shè)置年輕代為并行收集∏郾颍可與CMS收集同時(shí)使用蓄髓。JDK5.0以上,JVM會(huì)根據(jù)系統(tǒng)配置自行設(shè)置舒帮,所以無需再設(shè)置此值
-XX:+UseParNewGC
降低標(biāo)記停頓
-XX:+CMSParallelRemarkEnabled
使用手動(dòng)定義初始化定義開始CMS收集
-XX:+UseCMSInitiatingOccupancyOnly
使用cms作為垃圾回收会喝,使用70%后開始CMS收集
-XX:CMSInitiatingOccupancyFraction=70
啟用CMSClassUnloadingEnabled陡叠,GC也會(huì)掃描PermGen,并刪除不再使用的類
-XX:+CMSClassUnloadingEnabled
針對(duì)SoftRefLRUPolicyMSPerMB的生產(chǎn)問題https://blog.csdn.net/qiang_zi_/article/details/100700784
反射過程中JVM自動(dòng)創(chuàng)建的軟引用的一些類的Class對(duì)象的回收時(shí)間好乐,0代表每次FGC都會(huì)回收
-XX:SoftRefLRUPolicyMSPerMB=0
輸出簡(jiǎn)要GC日志
-XX:+PrintGC
開啟記錄GC日志
-XX:+UseGCLogFileRotation
GC日志最大有5個(gè)日志
-XX:NumberOfGCLogFiles=5
每個(gè)日志256M
-XX:GCLogFileSize=256M
打印GC詳細(xì)日志信息
-XX:+PrintGCDetails
GC 日志的前面加上一個(gè)時(shí)間戳匾竿。這個(gè)時(shí)間戳表示 JVM 啟動(dòng)后到現(xiàn)在所逝去的時(shí)間
-XX:+PrintGCTimeStamps
打印GC前后的詳細(xì)堆棧信息
-XX:+PrintHeapAtGC
可以打印出類的加載順序,可以用來排查 class 的沖突問題
-XX:TraceClassLoading
可以打印出類的卸載順序蔚万,可以用來排查 class 的沖突問題
-XX:TraceClassUnloading