JVM的常用參數(shù)

1、堆內(nèi)存相關(guān)配置

設置堆初始值

指令1:-Xms2g

指令2:-XX:InitialHeapSize=2048m

設置堆最大值

指令1:-Xmx2g

指令2:-XX:MaxHeapSize=2048m

縮小堆內(nèi)存的時機

-XX:MaxHeapFreeRatio=70

堆內(nèi)存空閑率大于70時收縮堆內(nèi)存,xms=xmx時該參數(shù)無效,默認值70

擴張堆內(nèi)存的時機

-XX:MinHeapFreeRatio=40

堆內(nèi)存空閑率小于40時擴張堆內(nèi)存,xms=xmx時該參數(shù)無效,默認值40

新生代內(nèi)存配置

指令1:-Xmn512m

指令2:-XX:MaxNewSize=512m

兩個Survivor區(qū)和Eden區(qū)的占比

指令:-XX:SurvivorRatio=8?

Eden區(qū)占新生代的8/10,兩個Survivor區(qū)各占新生代的1/10

新生代和老年代的占比

-XX:NewRatio=4?

老年代占整個堆的4/5,新生代占整個堆的1/5

2、方法區(qū)內(nèi)存相關(guān)配置

設置Metaspace的初始值

-XX:MetaspaceSize

設置Metaspace的最大值

-XX:MaxMetaspaceSize

3、虛擬機棧內(nèi)存相關(guān)配置

設置虛擬機棧最大值

指令1:-Xss256k

指令2:-XX:ThreadStackSize=256k

4、配置垃圾收集器

Serial垃圾收集器(新生代)

開啟:-XX:+UseSerialGC

關(guān)閉:-XX:-UseSerialGC

新生代使用Serial,老年代則使用Serial Old

ParNew垃圾收集器(新生代)

開啟-XX:+UseParNewGC

關(guān)閉-XX:-UseParNewGC

新生代使用ParNew,老年代則使用CMS

Parallel Scavenge垃圾收集器(新生代)

開啟-XX:+UseParallelOldGC

關(guān)閉-XX:-UseParallelOldGC

新生代使用Parallel Scavenge,老年代則使用Parallel Old

Parallel Old垃圾收集器(老年代)

開啟-XX:+UseParallelGC

關(guān)閉-XX:-UseParallelGC

CMS垃圾收集器(老年代)

開啟-XX:+UseConcMarkSweepGC

關(guān)閉-XX:-UseConcMarkSweepGC

G1垃圾收集器

開啟-XX:+UseG1GC

關(guān)閉-XX:-UseG1GC

5、GC策略配置

GC并行執(zhí)行線程數(shù)

-XX:ParallelGCThreads=16

新生代可容納的最大對象

-XX:PretenureSizeThreshold=1000000

大于此值的對象直接會分配到老年代,設置為0則沒有限制

避免在Eden區(qū)和Survivor區(qū)發(fā)生大量的內(nèi)存復制,該參數(shù)只對Serial和ParNew垃圾收集器有效,Parallel Scavenge并不認識該參數(shù)

進入老年代的GC年齡

進入老年代最小的GC年齡

-XX:InitialTenuringThreshol=7

新生代對象轉(zhuǎn)換為老年代對象最小年齡值,默認值7,對象在堅持過一次Minor GC之后,年齡就加1

進入老年代最大的GC年齡

-XX:MaxTenuringThreshold=15

新生代對象轉(zhuǎn)換為老年代對象最大年齡值,默認值15

6、GC日志信息配置

配置GC文件路徑

-Xloggc:/data/gclog/gc.log

固定路徑名稱生成

-Xloggc:/home/GCEASY/gc-%t.log

根據(jù)時間生成

滾動生成日志

開啟-XX:+UseGCLogFileRotation

關(guān)閉-XX:-UseGCLogFileRotation

-XX:NumberOfGCLogFiles=4

滾動GC日志文件數(shù),默認0,不滾動

-XX:GCLogFileSize=100k

GC文件滾動大小

打印詳細的GC日志

開啟-XX:+PrintGCDetails

關(guān)閉-XX:-PrintGCDetails

打印應用暫停時間

開啟 -XX:+PrintGCApplicationStoppedTime

關(guān)閉 -XX:-PrintGCApplicationStoppedTime

每次GC完成后,打印出JVM堆內(nèi)存每個區(qū)域的使用情況

開啟-XX:+PrintHeapAtGC

關(guān)閉-XX:-PrintHeapAtGC

打印存活實例年齡信息

開啟 -XX:+PrintTenuringDistribution

關(guān)閉 -XX:-PrintTenuringDistribution

7、條件觸發(fā)配置

拋出內(nèi)存溢出錯誤時導出堆信息到指定文件

開啟-XX:+HeapDumpOnOutOfMemoryError

關(guān)閉-XX:-HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=/data/dump/jvm.dump

設置文件路徑

在Full GC時生成dump文件

-XX:+HeapDumpBeforeFullGC

實現(xiàn)在Full GC前dump

-XX:+HeapDumpAfterFullGC

實現(xiàn)在Full GC后dump

-XX:HeapDumpPath=e:\dump

設置Dump保存的路徑

轉(zhuǎn)自:https://zhuanlan.zhihu.com/p/243064867

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容