參數(shù) |
說明 |
1.堆內(nèi)存參數(shù)設(shè)置 | |
-Xms 或 -XX:InitialHeapSize=n |
設(shè)置堆的初始值 指令1:-Xms2g |
-XX:MaxHeapSize=n |
設(shè)置堆區(qū)最大值 指令1: -Xmx2g 指令2: -XX:MaxHeapSize=2048m |
-XX:NewSize=n | 設(shè)置年輕代大小 |
-Xss 或 -XX:ThreadStackSize=n |
每個線程堆棧最大值 指令1:-Xss256k 默認堆棧大小為1M,應(yīng)該128K就夠用,大的堆棧建議256K,棧設(shè)置太大,會導致線程創(chuàng)建減少。棧設(shè)置小,會導致深入不夠,深度的遞歸會導致棧溢出。 |
-Xmn 或 -XX:MaxNewSize=n |
新生代內(nèi)存配置 指令1:-Xmn512m 指令2:-XX:MaxNewSize=512m |
-XX:SurvivorRatio=n | 2個survivor區(qū)和Eden區(qū)大小比率 年輕代中Eden區(qū)與兩個Survivor區(qū)的比值.注意Survivor區(qū)有兩個,S區(qū)和Eden區(qū)在新生代比例為1:8,兩個S區(qū)2:8 |
-XX:NewRatio=n | 新生代和老年代的占比 表示新生代:老年代 = 1:2?即老年代占整個堆的2/3;默認值=2 如果-Xms==-Xmx,且設(shè)置了-Xmn的情況下,不用設(shè)置此參數(shù)。 |
-Duser.timezone=GMT+08 | 指定時區(qū) |
‐Dfile.encoding=UTF‐8 | 指定默認的文件編碼 |
2.垃圾回收器設(shè)置 | |
-XX:+PrintGC |
簡單打印GC日志 |
-XX:+PrintGCDetails | 詳細打印GC日志 |
-XX:+PrintHeapAtGC | 打印GC前后詳細的堆棧信息 |
-XX:+PrintGCTimeStamps | GC發(fā)生時,額外輸出GC發(fā)生的時間,該輸出時間為虛擬機啟動后的時間偏移量 |
-XX:+PrintGCDateStamps | GC發(fā)生時,帶時區(qū)的日期打印 |
-XX:+PrintGCApplicationConcurrentTime | 打印每次垃圾回收前,應(yīng)用程序未中斷執(zhí)行時間 |
-XX:+PrintGCApplicationStoppedTime | 打印應(yīng)用程序由于GC而產(chǎn)生的停頓時間 |
-XX:+PrintReferenceGC | 跟蹤系統(tǒng)內(nèi)的軟引用,弱引用,虛引用和Finallize隊列 |
2.1 GC回收日志打印 | |
-Xloggc:log/gc.log | 指定gc日志輸出的文件路徑。 JDK8開始支持使用%p,%t等占位符來指定GC輸出文件。分別表示進程pid和啟動時間戳。 例如:? -Xloggc:/data/gclog/gc.log 固定路徑名稱生成 -Xloggc:/data/gclog/gc-%t.log? 根據(jù)時間生成 -Xloggc:/data/gclog/gc-%p.log? 根據(jù)進程pid生成 |
-XX:+UseGCLogFileRotation | 滾動生成日志 日志文件達到一定大小后,生成另一個文件,須配置-Xloggc |
-XX:NumberOfGCLogFiles=n | -XX:NumberOfGCLogFiles=4 滾動GC日志文件數(shù),默認0,不滾動,需配置UseGCLogFileRotation,設(shè)置為0表示僅通過jcmd命令觸發(fā) |
-XX:GCLogFileSize=n | -XX:GCLogFileSize=100k GC文件滾動大小,需配置UseGCLogFileRotation,設(shè)置為0表示僅通過jcmd命令觸發(fā) |
2.2 堆內(nèi)存溢出配置 | |
-XX:+HeapDumpOnOutOfMemoryError | 內(nèi)存溢出時導出整個堆信息,讓JVM遇到OOM異常時能輸出堆內(nèi)信息,并通過(-XX:+HeapDumpPath)參數(shù)設(shè)置堆內(nèi)存溢出快照輸出的文件地址 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./log/dump/ |
-XX:HeapDumpPath | 指定導出堆的存放路徑 |
-XX:OnOutOfMemoryError=“” | 利用這個參數(shù),我們可以在系統(tǒng)OOM后,自定義一個腳本,可以用來發(fā)送郵件告警信息,可以用來重啟系統(tǒng)等等。 -XX:OnOutOfMemoryError="/opt/local/bin/alert.sh" |
-XX:+HeapDumpBeforeFullGC | 實現(xiàn)在Full GC前dump -XX:HeapDumpPath=/logs/設(shè)置Dump保存的路徑 |
-XX:+HeapDumpAfterFullGC | 實現(xiàn)在Full GC后dump -XX:HeapDumpPath=/logs/設(shè)置Dump保存的路徑 |
2.3 垃圾回收器配置 | |
-XX:+UseSerialGC | 允許使用串行垃圾收集器。對于不需要垃圾收集的任何特殊功能的小型和簡單應(yīng)用程序,這通常是最佳選擇。默認情況下,禁用此選項,并根據(jù)計算機的配置和JVM的類型自動選擇收集器。 |
-XX:+UseParallelGC | 允許使用并行清除垃圾收集器(也稱為吞吐量收集器),通過利用多個處理器來提高應(yīng)用程序的性能。 默認情況下,禁用此選項,并根據(jù)計算機的配置和JVM的類型自動選擇收集器。如果已啟用,則會 |
-XX:+UseParalledlOldGC | 允許將并行垃圾收集器用于完整的GC。默認情況下,禁用此選項。啟用它會自動啟用該-XX:+UseParallelGC 選項。 |
-XX:+UseConcMarkSweepGC | 允許為老年代使用CMS垃圾收集器。Oracle建議您在spam( 默認情況下,禁用此選項,并根據(jù)計算機的配置和JVM的類型自動選擇收集器。啟用此選項后,將 |
-XX:+UseParNewGC | 允許在年輕代中使用并行線程進行收集。默認情況下,禁用此選項。設(shè)置-XX:+UseConcMarkSweepGC 選項時會自動啟用它。使用-XX:+UseParNewGC 不帶選項-XX:+UseConcMarkSweepGC 的選擇是在JDK 8棄用 |
-XX:+UseG1GC | 允許使用垃圾優(yōu)先(G1)垃圾收集器。它是一個服務(wù)器式垃圾收集器,針對具有大量RAM的多處理器機器。它以高概率滿足GC暫停時間目標,同時保持良好的吞吐量。G1收集器推薦用于需要大堆(大小約為6 GB或更大)且GC延遲要求有限的應(yīng)用(穩(wěn)定且可預測的暫停時間低于0.5秒) |
-XX:ParallelGCThreads=n | GC并行執(zhí)行線程數(shù) -XX:ParallelGCThreads=16 |
3.輔助指令(查看或修改正在運行的JVM 某項配置) | |
jinfo -flag 參數(shù) pid | 查看HeapDumpOnOutOfMemoryError 配置是否開啟 jinfo -flag HeapDumpOnOutOfMemoryError 10001 修改HeapDumpOnOutOfMemoryError 配置(-關(guān)閉 +開啟) jinfo -flag +HeapDumpOnOutOfMemoryError 10001 |
-XX:+PrintFlagsFinal | 查看jvm參數(shù)配置 -XX:+PrintFlagsFinal |grep GC 查看與GC相關(guān)參數(shù)配置 |
-XX:+PrintCommandLineFlags | 打印已經(jīng)被用戶或者當前虛擬機設(shè)置過的參數(shù) -XX:+PrintCommandLineFlags -version 查看GC堆的初始大小以及GC收集器類型 |
4.JDK8的JVM啟動參數(shù)默認配置 | |
| |
4.禁止和廢棄參數(shù)選項 | |
-Xincgc 啟用增量垃圾收集。此選項在JDK 8中已棄用,無需替換。 -Xrun?libname 加載指定的調(diào)試/分析庫。此選項已被該選項取代 -XX:CMSIncrementalDutyCycle =?百分比 設(shè)置允許并發(fā)收集器運行的次要集合之間的時間百分比(0到100)。在棄用選項后,此選項在JDK 8中已棄用,沒有替換 -XX:CMSIncrementalDutyCycleMin =?百分比 設(shè)置次要集合之間的時間百分比(0到100),它 -XX:+ CMSIncrementalMode 啟用CMS收集器的增量模式。此選項在JDK 8中已棄用,沒有替換,以及其他選項 -XX:CMSIncrementalOffset =?百分比 設(shè)置增量模式占空比在次要集合之間的時間段內(nèi)向右移動的時間百分比(0到100)。在棄用選項后,此選項在JDK 8中已棄用,沒有替換 -XX:+ CMSIncrementalPacing 根據(jù)JVM運行時收集的統(tǒng)計信息,啟用增量模式占空比的自動調(diào)整。在棄用選項后,此選項在JDK 8中已棄用,沒有替換 -XX:CMSIncrementalSafetyFactor =?百分比 設(shè)置計算占空比時用于添加保守性的時間百分比(0到100)。在棄用選項后,此選項在JDK 8中已棄用,沒有替換 -XX:CMSInitiatingPermOccupancyFraction =?百分比 設(shè)置啟動GC的永久生成占用率(0到100)的百分比。此選項在JDK 8中已棄用,無需替換。 -XX:MaxPermSize =?size 設(shè)置最大永久生成空間大?。ㄒ宰止?jié)為單位)。此選項在JDK 8中已棄用,并由該 -XX:PermSize =?size 設(shè)置分配給永久生成的空間(以字節(jié)為單位),如果超出則會觸發(fā)垃圾回收。此選項在JDK 8中已棄用,并被該 -XX:+ UseSplitVerifier 允許拆分驗證過程。默認情況下,此選項在先前版本中已啟用,驗證分為兩個階段:類型引用(由編譯器執(zhí)行)和類型檢查(由JVM運行時執(zhí)行)。此選項在JDK 8中已棄用,現(xiàn)在默認情況下會對驗證進行拆分,而無法將其禁用。 -XX:+ UseStringCache文章來源:http://www.zghlxwxcb.cn/news/detail-772765.html 啟用常用分配字符串的緩存。此選項已從JDK 8中刪除,無需替換。文章來源地址http://www.zghlxwxcb.cn/news/detail-772765.html |
到了這里,關(guān)于【Java】JDK8 jvm參數(shù)配置及說明的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!