jvm參數調優

Jvm常用參數
---------------------------------------
堆內存 = 年輕代+老年代
年輕代 = Eden+Survivor
Survivor = From Space+To Space
---------------------------------------
年輕代 = Eden+From Space+To Space
堆內存=Eden+From Space+To Space+老年代
====================================

-Xms2048m,初始堆大小,建議<物理內存的1/4,默認值爲物理內存的1/64----
-Xmx2048m,最大堆大小,建議與-Xms保持一致,默認值爲物理內存的1/4
-Xmn512m,新生代大小,建議不超過堆內存的1/2
-Xss256k,線程堆棧大小,建議256k
-XX:PermSize=256m,永久代初始值,默認值爲物理內存的1/64
-XX:MaxPermSize=256m,永久代最大值,默認值爲物理內存的1/4
-XX:SurvivorRatio=8:年輕帶中Eden區和Survivor區的比例,默認爲8:1,即Eden(8),From Space(1),ToSpace(1)
-XX:MaxTenuringThreshold=15:晉升到老年代的對象年齡,每個對象堅持過一次MinorGC後對象年齡+1,默認值是15,年齡超過15進入到老年代,該參數在串行GC時有效------
-XX:PretenureSizeThreshold=3145728:單位字節,只對Serial和ParNew兩款收集器有效,新生代採用Parallel Scavenge GC時無效,大於這個值的對象直接在老年代進行分配

非穩定參數,使用方式主要有以下三種:
1,-XX +<option>:開啓option參數
2,-XX -<option>:關閉option參數
3,-XX <option>=<value>:將option參數的值設置爲value

client模式,Jvm默認垃圾收集器
UseSerialGC:新生代採用Serial收集器,老年代採用Serial Old收集器

server模式,Jvm默認垃圾回收期
UseParallelGc:新生代採用Parallel Scavenge收集器,吞吐量優先的收集器,老年代採用Serial Old收集器

-XX:+UseConcMarkSweepGC:默認關閉,ParNew+CMS+Serial Old,當CMS收集器出現ConcurrentModeFailure錯誤(Jvm預留空間不足以容納程序使用),採用後備收集器Serial Old
CMS相關參數
-XX:CMSInitiatingOccupancyFraction=80:CMS收集器在老年代空間被使用多少時觸發FullGC,默認爲92
-XX:+UseCMSCompactAtFullCollection:CMS收集器在FullGC時開啓內存碎片的壓縮,默認關閉,需要的時候可以選擇打開
-XX:CMSFullGCsBeforeCompaction=8:執行多少次不壓縮FullGC後,進行一次壓縮,默認是0(代表每次FullGC都進行壓縮)
-XX:+UseCMSInitiatingOccupancyOnly:使用手動定義初始化定義開始,禁止hostspot自行觸發CMS GC
-XX:ParallelGCThreads=8:並行收集器的線程數,此值最好配置與處理器數目相等 同樣適用於CMS

日誌參數:
-XX:+HeapDumpOnOutOfMemoryError:當發生內存溢出時,進行堆內存dump
-XX:+PrintGCDetails:打印GC的詳細信息
======================================================================

企業實際配置
-server -Xms1028m -Xmx1028m -XX:PermSize=256m -XX:MaxPermSize=256m -Xmn512m -XX:MaxDirectMemorySize=1g -XX:SurvivorRatio=10 
-XX:+UseConcMarkSweepGC 
-XX:+UseCMSCompactAtFullCollection 
-XX:CMSMaxAbortablePrecleanTime=5000 
-XX:+CMSClassUnloadingEnabled 
-XX:CMSInitiatingOccupancyFraction=80 
-XX:+UseCMSInitiatingOccupancyOnly 
-XX:ParallelGCThreads=8 
-Xloggc:/home/admin/logs/gc.log 
-XX:+PrintGCDetails 
-XX:+PrintGCDateStamps 
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/home/admin/logs/java.hprof

建議閱讀《深入理解Java虛擬機》

發佈了49 篇原創文章 · 獲贊 20 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章