2018/10/9

JVM 效能調教 (二) - JVM常用參數


  •  本章敘述JVM常用參數 參考網址
  • Flow
    1. 追蹤垃圾回收機制的追蹤
    2. class加載/卸載的追蹤
    3. 系統參數的追蹤
    4. 設置Heap
    5. 設置新生代 ( Young generation )
    6. OOM處理
    7. Method area與stack配置如第一章
    8. 配置直接內存
    9. 虛擬機的工作模式( client/server)
  • Detail
    • 1a 常用參數
      • # -XX:+PrintGC 輸出GC日誌
      • # -XX:+PrintGCDetails 輸出GC的詳細日誌 , 另外JVM結束後打印出更多Heap信息
      • # -XX:+PrintGCTimeStamps 輸出GC的時間戳(JVM啟動後的秒數位置)
      • # -XX:+PrintGCDateStamps 輸出GC的時間戳(以日期的形式,如 2013-05-04T21:53:59.234+0800
      • # -XX:+PrintHeapAtGC 每次在進行GC的前後打印出更多heap的信息
      • # -Xloggc:../logs/gc.log 日誌文件的輸出路徑
      • #-XX:+PrintGCApplicationConcurrentTime 出執行GC , application當前時間戳
      • #-XX:+PrintGCApplicationStoppedTime 出執行GC , application thread暫停時間
    • 1b 主要描述內容 
      • [GC 使用量(前) ->使用量(後)(當前可用空間)]
    • 2a 常用參數
      • # -XX:+TraceClassLoadding 加載時
      • # -XX:+TraceClassUnLoadding 卸載時
      • # -XX:+PrintClassHistogram 開發工具console使用 (Ctrl+break)
    • 3a 常用參數
      • # -XX:+PrintVMOptions 打印顯示參數
      • # -XX:+PrintCommandFlags 打印顯示和隱示(JVM自設)參數
      • # -XX:+PrintFlagsFinal 打印完整參數
    • 4a  常用參數
      • # -Xms 初始大小 ,JVM會盡可能維持在這大小內運行
      • # -Xmx 最大空間 , JVM會拉一些空間給GC使用
    • 4b 當Heap free空間不足時 , 會促使total空間向上擴展 , 但不超過max空間限制 
    • 4c 建議可直接將 -Xms 與 -Xmx 設置相等 , 可減少GC次數 , 提高效能
    • 5a 常用參數
      • # -Xmn  新生代空間 ,   建議為Heap空間的  1/3~1/4左右
      • # -XX:SurvivorRatio   Eden空間 與  From/To空間比例
      • # -XX:NewRatio   老年代空間 與  新生代空間比例
    • 5b 新生代可用空間 = Eden+(From/To) 
    • 5c 當創建實例 , Eden區上和其中一塊倖存區仍標記存活的對象複製到另一塊倖存區, 當一塊倖存區空間不足存活時間夠久時 , 則存放到老年代
    • 5d 建議將對象存在新生代中 ,減少額外對老年代GC的次數
    • 6a 常用參數
      • # -XX:+HeapDumpOnOutOfMemoryError OOM發生時打印Heap訊息
      • # -XX:+HeapDumpPath OOM發生時產生文件
      • # -XX:+OnOutOfMemoryError OOM發生時執行腳本 
    • 8a 常用參數
      • # -XX:MaxDirectMemorySize  預設同-Xmx
    • 8b -server參數可幫助優化
    • 8c 直接內存適合內存空間(new)申請次數少的場合 , 否則效能會比操作heap內存低
    • 9a server模式啟動速度慢但效能高 , client模式反之












    沒有留言:

    張貼留言

    test2