JVM最佳化配置
一、JVM基礎引數配置
-Xms 初始堆大小[預設實體記憶體的1/64]
-Xmx 最大堆大小[預設實體記憶體的1/4]
-Xmn 年輕代大小(1.4or lator)
-XX:NewSize 設定年輕代大小(for 1.3/1.4)
-XX:MaxNewSize 年輕代最大值(for 1.3/1.4)
-XX:PermSize 設定持久代(perm gen)初始值[預設實體記憶體的1/64]
-XX:MaxPermSize 設定持久代最大值[預設實體記憶體的1/4]
-Xss 每個執行緒的堆疊大小[JDK5.0以後每個執行緒堆疊大小為1M,以前每個執行緒堆疊大小為256K]
-XX:ThreadStackSize 執行緒堆疊大小(0表示使用預設堆疊大小)
-XX:NewRatio 年輕代與年老代的比值 -XX:NewRatio=4表示年輕代與年老代所佔比值為1:4設定了Xmn的情況下,該引數不需要進行設定。
-XX:SurvivorRatio Eden區與Survivor區的大小比值[預設8 8:1:1]
-XX:LargePageSizeInBytes 記憶體頁的大小不可設定過大, 會影響Perm的大小=128m
-XX:+UseFastAccessorMethods 原始型別的快速最佳化
-XX:+DisableExplicitGC 關閉System.gc()
-XX:MaxTenuringThreshold 垃圾最大年齡[預設15]如果設定為0的話,則年輕代物件不經過Survivor區,直接進入年老代.
-XX:+AggressiveOpts 加快編譯
-XX:+UseBiasedLocking 鎖機制的效能改善
-Xnoclassgc 禁用垃圾回收
-XX:SoftRefLRUPolicyMSPerMB 每兆堆空閒空間中SoftReference的存活時間[預設1s]
-XX:PretenureSizeThreshold 物件超過多大是直接在舊生代分配
-XX:TLABWasteTargetPercent TLAB佔eden區的百分比[預設1% ]
-XX:+CollectGen0First FullGC時是否先YGC[預設false]
二、垃圾回收器的選取
2.1 單核測試環境
‐XX:+UseSerialGC 開啟 Serial 收集器
‐XX:+UseSerialOldGC 開啟 SerialOld 收集器
2.2 吞吐量優先
-XX:+UseParallelGC 開啟 ParallelScavenge 收集器
XX:+UseParalledlOldGC 開啟 ParallelOld 收集器
‐XX:ParallelGCThreads 設定GC工作的執行緒數量[同樣使用於CMS]
2.3 響應速度優先
-XX:+UseParNewGC 開啟 ParNew 收集器
-XX:+UseConcMarkSweepGC 開啟 CMS 收集器
‐XX:+UseCMSCompactAtFullCollection 開啟空間壓縮(處理空間碎片)
‐XX:ConcGCThreads 設定併發的FullGC執行緒數[(ParallelGCThreads+3)/4 ParallelGCThreads 預設=cpu核心數量]
‐XX:CMSFullGCsBeforeCompaction 設定空間壓縮的頻次[預設0,每次FullGC後都會壓縮一次]
‐XX:CMSInitiatingOccupancyFraction 設定FullGC觸發閾值[1.6+預設是92,之前62]
‐XX:+UseCMSInitiatingOccupancyOnly 只使用設定的回收閾值(‐XX:CMSInitiatingOccupancyFraction設定的值),如果不指定,JVM僅在第一次使用設定值,後續則會自動調整
‐XX:+CMSScavengeBeforeRemark 在CMS GC前啟動一次MinorGC,目的在於減少老年代對年輕代的引用,降低CMS GC的標記階段時的開銷,一般CMS的GC耗時80%都在remark階段
或者
‐XX:+UseG1GC 開啟G1收集器
‐XX:G1HeapRegionSize 設定分割槽大小(1MB~32MB,必須是2的冪,預設分為2048個分割槽)
‐XX:MaxGCPauseMillis 設定目標暫停時間(預設200ms)
‐XX:G1NewSizePercent 設定新生代記憶體初始空間(預設整堆5%)
‐XX:G1MaxNewSizePercen 設定新生代記憶體最大空間
‐XX:TargetSurvivorRatio 設定Survivor區的填充容量(預設50%,當年輕代空間被佔用超過50%,則將物件根據年齡由小到大累加,當累加物件空間佔用達到50%時將大於等於此年齡的物件轉移到老年代)
‐XX:InitiatingHeapOccupancyPercent 設定混合回收觸發閥值(預設45%,設定老年代佔用空間達到整堆記憶體閾值)
‐XX:G1HeapWastePercent 設定停止預設region回收閥值(預設5%,空閒出來的Region數量達到了堆記憶體的5%停止回收)。
‐XX:G1MixedGCLiveThresholdPercent 設定region回收閥值(預設85%,存活物件低於這個值時才會回收)
‐XX:G1MixedGCCountTarget 設定賽選回收次數(預設8次)
三、開啟GC日誌
‐XX:+PrintGCDetails 列印GC日誌
‐XX:+PrintGCTimeStamps 列印GC時間
‐XX:+PrintGCDateStamps 列印GC日期
‐Xloggc 將GC日誌儲存為檔案,比如‐Xloggc:./gc.log
四、開啟TLAB
-XX: +UseTLAB
五、關閉逃逸分析
-XX:-DoEscapeAnalysis
六、Jvm 監控
javap java位元組碼資訊檢視工具
jps java虛擬機器程式資訊工具
jinfo java虛擬機器程式配置資訊工具
jstat java虛擬機器程式統計資訊監控工具
jstack java虛擬機器程式堆疊跟蹤工具, 製作執行緒Dump
jmap java虛擬機器程式堆記憶體對映,製作堆Dump
jconsole 用於提供JVM活動的圖形化檢視,包括執行緒的使用、類的使用和GC活動.
jvisualvm 監控JVM的GUI工具,可用來剖析執行的應用,分析JVM堆轉儲.
七、Linux監控命令
top 實時顯示正在執行程式的 CPU 使用率、記憶體使用率以及系統負載等資訊
vmstat 對作業系統的虛擬記憶體、程式、CPU活動進行監控
pidstat 監控指定程式的上下文切換
iostat 監控磁碟IO
free 記憶體使用情況
df 磁碟使用情況
第三方監控工具 MAT、GChisto、JProfiler、Arthas。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-2993410/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- jvm引數配置JVM
- 五種JVM效能最佳化技巧JVM
- 深入理解JVM之編譯最佳化JVM編譯
- aix下jvm引數最佳化問題AIJVM
- tomcat jvm 引數配置TomcatJVM
- JVM 調優示例和配置JVM
- JVM 中配置服務時區JVM
- JVM記憶體引數配置JVM記憶體
- 全面輸出JVM配置引數JVM
- GitLab 配置最佳化Gitlab
- ORACLE profile 最佳化配置Oracle
- 常用的jvm配置引數 :永久區引數配置JVM
- Tomcat調優總結(Tomcat自身最佳化、Linux核心最佳化、JVM最佳化)【轉】TomcatLinuxJVM
- 淺談自旋鎖和 JVM 對鎖的最佳化JVM
- 檢視JVM預設配置引數JVM
- 深入理解JVM(三)——配置引數JVM
- postgresql配置引數最佳化SQL
- Nginx配置效能最佳化(轉)Nginx
- HBase記憶體配置及JVM優化記憶體JVM優化
- JVM記憶體溢位及合理配置JVM記憶體溢位
- JVM面試問題系列:JVM 配置常用引數和常用 GC 調優策略JVM面試GC
- 系統配置的最佳化:例項的初始配置
- MySQL 高併發配置最佳化MySql
- 記憶體配置的最佳化記憶體
- 雲原生背景下如何配置 JVM 記憶體JVM記憶體
- JVM調優總結-典型配置舉例1JVM
- JVM調優總結-典型配置舉例2JVM
- 一個效能較好的JVM引數配置JVM
- [轉帖]JVM記憶體配置最佳實踐JVM記憶體
- 深入瞭解JVM虛擬機器8:Java的編譯期最佳化與執行期最佳化JVM虛擬機Java編譯
- jvm的記憶體引數配置(skycto JEEditor)JVM記憶體
- JDK1.8 JVM生產環境引數配置JDKJVM
- JVM調優總結(七)-典型配置舉例1JVM
- JVM調優總結(八)-典型配置舉例2JVM
- Kafka - 配置檔案引數最佳化方案Kafka
- Win7系統基本最佳化配置Win7
- 使用System.getProperty方法,如何配置JVM系統屬性JVM
- Tomcat中JVM記憶體溢位及合理配置TomcatJVM記憶體溢位