JVM常用的調優參數

源於螞蟻課堂的學習,點擊這裏查看(老餘很給力)    

通用JVM參數

-server 
    如果不配置該參數,JVM會根據應用服務器硬件配置自動選擇不同模式,server模式啓動比較慢,但是運行期速度得到了優化,
適合於服務器端運行的JVM

-client
    啓動比較快,但是運行期響應沒有server模式的優化,適合於個人PC的服務開發和測試

-Xmx
    堆內存最大值,默認是機器物理內存的1/4

-Xms
    堆內存最小值,默認情況是機器物理內存的1/64,(最大和最小最好相同)

-XX:PermSize
    初始化永久內存區域大小(元空間)

-XX:MaxPermSize
    設置元空間上限

-Xmn
    新生代大小 默認是堆內存的1/3

-XX:SurvivorRatio
    設置年輕代中Eden區與Survivor區的大小比值

-XX:MaxTenuringThreshold
    設置垃圾的最大年齡,即經歷多少次新生代垃圾回收後依舊存活,進入老年代

-XX:GCTimeRatio
    設置垃圾回收時間佔程序運行時間的百分比
    該參數設置爲n的話,則垃圾回收時間佔程序運行時間百分比的公式爲1/(1+n)

-XX:TargetsurvivorRatio
    控制允許使用的救助空間的比例,默認值是50

-Xss
    設置每個線程的堆棧大小

-Xnoclassgc 
    取消系統對特定類的垃圾回收

 串行收集器參數

-XX:+UseSerialGC
    設置串行收集器

並行收集器參數 

-XX:+UseParallelGC
    選擇垃圾收集器爲並行收集器,此配置僅對年輕代有效

-XX:ParallelGCThreads
    配置並行收集器的線程數

-XX:+UseParallelOldGC
    採用對於老年代併發收集的策略

-XX:MaxGCPauseMillis
    設置每次年輕代並行收集最大暫停時間,如果無法滿足此時間,JVM會自動調整年輕代大小以滿足此值

-XX:+UseAdaptiveSizePolicy
    並行收集器會自動選擇年輕代區大小和相應的Survivor區比例,以達到目標系統規定的最低響應時間或者收集頻率

 併發收集器參數

-XX:+UseConcMarkSweepGC
    指定在老年代使用 concurrent cmark sweep gc

-XX:+UseParNewGC
    指定在New Generation使用 parallel collector

-XX:+UseCMSCompactAtFullCollection
    打開對老年代的壓縮

-XX:+CMSIncrementalMode
    設置爲增量模式。適用於單CPU情況

-XX:CMSFullGCsBeforeCompaction
    由於併發收集器不對內存空間進行壓縮、整理,所以運行一段時間以後會產生“碎片”,使得運行效率降低

-XX:+CMSClassUnloadingEnabled 
    使CMS收集持久代的類,而不是full gc

​​​​​​​監控結果

jmap命令查看堆內存分配和使用情況

top命令監控結果

jstat -gcutil 進程號 命令監控結果

jstack 進程號 輸出日誌

 系統的JVM設置

<jvm-options>-XX:+PrintGCApplicationConcurrentTime</jvm-options> 
<jvm-options>-XX:+PrintGCApplicationStoppedTime</jvm-options>
<jvm-options>-XX:+PrintGCTimeStamps</jvm-options>
<jvm-options>-XX:+PrintGCDetails</jvm-options>
<jvm-options>-Xms2048m</jvm-options>
<jvm-options>-Xmx2048m</jvm-options>
<jvm-options>-server</jvm-options>
<jvm-options>-Djava.awt.headless=true</jvm-options>
<jvm-options>-XX:PermSize=256m</jvm-options>
<jvm-options>-XX:MaxPermSize=256m</jvm-options>
<jvm-options>-XX:+DisableExplicitGC</jvm-options>
<jvm-options>-Xmn768M</jvm-options>
<jvm-options>-XX:SurvivorRatio=3</jvm-options>
<jvm-options>-Xss128K</jvm-options>
<jvm-options>-XX:TargetSurvivorRatio=80</jvm-options>
<jvm-options>-XX:MaxTenuringThreshold=5</jvm-options>
<jvm-options>-XX:+UseConcMarkSweepGC</jvm-options>
<jvm-options>-XX:+CMSClassUnloadingEnabled</jvm-options>
<jvm-options>-XX:+UseCMSCompactAtFullCollection</jvm-options>
<jvm-options>-XX:-CMSParallelRemarkEnabled</jvm-options>

 Gc相關參數

控制檯打印gc日誌 

-verbose:gc
-XX:+PrintGCDetails
-XX:+PrintHeapAtGC(詳細的gc信息)

輸出gc日誌到指定文件

 -Xloggc:
(例如:  -Xloggc:D:\logs\gc.log)

Gc日誌分塊

-XX:-UseGCLogFileRotation
-XX:GCLogFileSize = 8M

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章