JVM參數使用手冊


內存分配相關

Xms
英文釋義:Initial heap size(in bytes)
中文釋義:堆區初始值
使用方法:-Xms2g 或 -XX:InitialHeapSize=2048m

Xmx
英文釋義:Maximum heap size(in bytes)
中文釋義:堆區最大值
使用方法:-Xmx2g 或 -XX:MaxHeapSize=2048m

Xmn
英文釋義:Maximum new generation size(in bytes)
中文釋義:新生代最大值
使用方法:-Xmn512m 或 -XX:MaxNewSize=512m

PermSizeMetaspaceSize
英文釋義:Initial size of permanent generation(in bytes)
中文釋義:永久代(元空間)初始值
使用方法:-XX:PermSize=128m(1.7 之前版本)、-XX:MetaspaceSize=128m(1.7 之后版本)

MaxPermSizeMetaspaceSize
英文釋義:Maximum size of permanent generation(in bytes)
中文釋義:永久代(元空間)最大值
使用方法:-XX:MaxPermSize=256m(1.7之前版本)、-XX:MaxMetaspaceSize=256m(1.7之后版本)

Xss
英文釋義:Thread Stack Size(in Kbytes)
中文釋義:線程棧最大值
使用方法:-Xss256k 或 -XX:ThreadStackSize=256k

GC 策略相關

SurvivorRatio
英文釋義:Rato of eden/survivor space size
中文釋義:Eden 區和 Survivor 的比值
使用方法:-XX:SurvivorRatio=6
使用經驗:默認值為 8,假如設為 6,則表示每個 Survivor 區跟 Eden 區的比值為1:6,每個 Survivor 區占新生代的八分之一

PretenureSizeThreshold
英文釋義:Maximum size in bytes of objects allocated in DefNew generation;zero means no maximum
中文釋義:可以在新生代直接分配的對象最大值,0表示沒有最大值
使用方法:-XX:PretenureSizeThreshold=1000000
使用經驗:設置該參數,可以使大於這個值的對象直接在老年代分配,避免在 Eden 區和 Survivor 區發生大量的內存復制,該參數只對 Serial 和 ParNew 收集器有效,Parallel Scavenge並不認識該參數

MaxTenuringThreshold
英文釋義:Maximum value fo tenuring threshold
中文釋義:新生代最大年齡
使用方法:-XX:MaxTenuringThreshold=10
使用經驗:每個對象在堅持過一次Minor GC之后,年齡就增加1,當超過這個參數值時就進入老年代,最大支持15

ParallelRefProcEnabled
英文釋義:Enable parallel reference processing whenever possible
中文釋義:盡可能啟用並行引用處理
使用方法:通過-XX:+ParallelRefProcEnabled開啟,或者-XX:-ParallelRefProcEnabled關閉

ParallelGCThreads
英文釋義:Number of parallel threads parallel gc will use
中文釋義:並行執行gc的線程數
使用方法:-XX:ParallelGCThreads=16

UseSerialGC
英文釋義:Use the Serial garbage collector
中文釋義:新生代使用 Serial 垃圾收集器
使用方法:開啟 -XX:+UseSerialGC、關閉 -XX:-UseSerialGC
使用經驗:虛擬機在運行在 Client 模式下的默認值,老年代將會使用 SerialOld 垃圾收集器

UseParNewGC
英文釋義:Use parallel threads in the new generation
中文釋義:新生代使用 ParNew 垃圾收集器
使用方法:開啟 -XX:+UseParNewGC、關閉 -XX:-UseParNewGC
使用經驗:老年代將使用 Serial Old 收集器

CMSParallelRemarkEnabled
英文釋義:Whether parallel remark enabled (only if ParNewGC)
中文釋義:是否啟用並行標記(僅限於ParNewGC)
使用方法:開啟 -XX:+CMSParallelRemarkEnabled、關閉 -XX:-CMSParallelRemarkEnabled

UseParallelGC
英文釋義:Use the Parallel Scavenge garbage collector
中文釋義:新生代使用 Parallel Scavenge 垃圾收集器
使用方法:開啟 -XX:+UseParallelGC、關閉 -XX:-UseParallelGC
使用經驗:Linux下1.6,1.7,1.8 默認開啟(1.9 后默認啟用 G1 收集器),老年代將會使用 Serial Old 垃圾收集器

UseAdaptiveSizePolicy
英文釋義:Use adaptive generation sizing policies
中文釋義:自適應調節策略,動態調整 Java 堆中各個區域的大小以及進入老年代的年齡
使用方法:開啟 -XX:+UseAdaptiveSizePolicy、關閉 -XX:-UseAdaptiveSizePolicy

MaxTimeRatio
英文釋義:
中文釋義:GC 時間占總時間的比率,默認值為 99,即允許 1% 的 GC 時間。僅在 Parallel Scavenge 收集器時生效。
使用方法:-XX:MaxTimeRatio=99

MaxGCPauseMillis
英文釋義:Adaptive size policy maximum GC pause time goal in millisecond, or (G1 Only) the maximum GC time per MMU time slice
中文釋義:自適應策略的最大GC暫停時間目標(以毫秒為單位),或(僅G1)每個MMU時間片的最大GC時間
使用方法:-XX:MaxGCPauseMillis=200

UseParallelOldGC
英文釋義:Use the Parallel Old garbage collector
中文釋義:老年代使用 Parallel Old 收集器
使用方法:開啟 -XX:+UseParallelOldGC、關閉 -XX:-UseParallelOldGC
使用經驗:新生代將使用 Parallel Scavenge 收集器

UseConcMarkSweepGC
英文釋義:Use Concurrent Mark-Sweep GC in the old generation
中文釋義:老年代使用 CMS 收集器
使用方法:開啟 -XX:+UseConcMarkSweepGC、關閉 -XX:-UseConcMarkSweepGC
使用經驗:年輕代將會使用 ParNew 收集器,如果出現"Concurrent Mode Failure",會使用 Serial Old 收集器

CMSInitiatingOccupancyFraction
英文釋義:Percentage CMS generation occupancy to start a CMS collection cycle. A negative value means that CMSTriggerRatio is used
中文釋義:觸發執行 CMS 回收的老年代內存空間占用的百分比,負值表示使用 CMSTriggerRatio 設置的值
使用方法:-XX:+CMSInitiatingOccupancyFraction=75

UseCMSInitiatingOccupancyOnly
英文釋義:Only use occupancy as a criterion for staring a CMS collection
中文釋義:只根據占用情況作為開始執行CMS收集的標准
使用方法:開啟 -XX:+UseCMSInitiatingOccupancyOnly、關閉 -XX:-UseCMSInitiatingOccupancyOnly

UseCMSCompactAtFullCollection
英文釋義:Use Mark-Sweep-Compact algorithm at full collections
中文釋義:設置 CMS 收集器在完成垃圾收集后是否要進行一次碎片整理
使用方法:開啟 -XX:+UseCMSCompactAtFullCollection、關閉 -XX:-UseCMSCompactAtFullCollection

CMSFullGCsBeforeCompaction
英文釋義:Number of CMS full collection done before compaction if > 0
中文釋義:設置 CMS 收集器在進行若干次垃圾收集后再啟動一次內存碎片整理。
使用方法:-XX:CMSFullGCsBeforeCompaction=1

CMSClassUnloadingEnabled
英文釋義:Whether class unloading enabled when using CMS GC
中文釋義:當使用CMS GC時是否啟用類卸載功能
使用方法:開啟 -XX:+CMSClassUnloadingEnabled、關閉 -XX:-CMSClassUnloadingEnabled

UseG1GC
英文釋義:Use the Garbage-First garbage collector
中文釋義:使用G1垃圾收集器
使用方法:開啟 -XX:+UseG1GC、關閉 -XX:-UseG1GC
使用經驗:JDK 1.9 后默認選擇的垃圾收集器

DisableExplicitGC
英文釋義:Ignore calls to System.gc()
中文釋義:禁用 System.gc() 觸發FullGC
使用方法:開啟 -XX:+DisableExplicitGC、關閉 -XX:-DisableExplicitGC
使用經驗:不建議開啟,如果開啟了這個參數可能會導致對外內存無法及時回收造成對外內存溢出

GC日志相關

Xloggc
英文釋義:GC log file
中文釋義:GC日志文件路徑
使用方法:-Xloggc:/data/gclog/gc.log

UseGCLogFileRotation
英文釋義:Rotate gclog files(for long running applications). It requires -Xloggc:
中文釋義:滾動GC日志文件,須配置Xloggc
使用方法:開啟 -XX:+UseGCLogFileRotation、關閉 -XX:-UseGCLogFileRotation

NumberOfGCLogFiles
英文釋義:Number of gclog files in rotation(default:0,no rotation)
中文釋義:滾動 GC日志文件數,默認0,不滾動
使用方法:-XX:NumberOfGCLogFiles=4

GCLogFileSize
英文釋義:GC log file size,requires UseGCLogFileRotation. Set to 0 to only trigger rotation via jcmd
中文釋義:GC文件滾動大小,需配置UseGCLogFileRotation,設置為0表示僅通過jcmd命令觸發
使用方法:-XX:GCLogFileSize=100k

PrintGCDetails
英文釋義:Print more details at garbage collection
中文釋義:GC時打印更多詳細信息
使用方法:開啟 -XX:+PrintGCDetails、關閉 -XX:-PrintGCDetails
使用經驗:可以通過jinfo -flag [+|-]PrintGCDetails 或 jinfo -flag PrintGCDetails= 來動態開啟或設置值

PrintGCDateStamps
英文釋義:Print date stamps at garbage collection
中文釋義:GC時打印時間戳信息
使用方法:開啟 -XX:+PrintGCDateStamps、關閉 -XX:-PrintGCDateStamps
使用經驗:可以通過jinfo -flag [+|-] PrintGCDateStamps 或 jinfo -flag PrintGCDateStamps= 來動態開啟或設置值

PrintTenuringDistribution
英文釋義:Print tenuring age information
中文釋義:打印存活實例年齡信息
使用方法:開啟 -XX:+PrintTenuringDistribution、關閉 -XX:-PrintTenuringDistribution

PrintGCApplicationStoppedTime
英文釋義:Print the time of application has been stopped
中文釋義:打印應用暫停時間
使用方法:開啟 -XX:+PrintGCApplicationStoppedTime、關閉 -XX:-PrintGCApplicationStoppedTime

PrintHeapAtGC
英文釋義:Print heap layout before and after each GC
中文釋義:GC前后打印堆區使用信息
使用方法:開啟 -XX:+PrintHeapAtGC、關閉 -XX:-PrintHeapAtGC

異常相關

HeapDumpOnOutOfMemoryError
英文釋義:Dump heap to file when java.lang.OutOfMemoryError is thrown
中文釋義:拋出內存溢出錯誤時導出堆信息到指定文件
使用方法:開啟 -XX:+HeapDumpOnOutOfMemoryError、關閉 -XX:-HeapDumpOnOutOfMemoryError
使用經驗:可以通過 jinfo -flag [+|-]HeapDumpOnOutOfMemoryError 或 jinfo -flag HeapDumpOnOutOfMemoryError= 來動態開啟或設置值

HeapDumpPath
英文釋義:When HeapDumpOnOutOfMemoryError is on, the path(filename or directory) of the dump file(defaults to java_pid .hprof in the working directory)
中文釋義:當 HeapDumpOnOutOfMemoryError 開啟的時候,dump 文件的保存路徑,默認為工作目錄下的 java_pid .hprof 文件
使用方法:-XX:HeapDumpPath=/data/dump/jvm.dump

其他

server
英文釋義:server mode
中文釋義:服務端模式
使用方法:-server

TieredCompilation
英文釋義:Enable tiered compilation
中文釋義:啟用多層編譯
使用方法:開啟 -XX:+TieredCompilation、關閉 -XX:-TieredCompilation


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM