Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JVM的な何か@JVM Operation Casual Talk

  • Login to see the comments

JVM的な何か@JVM Operation Casual Talk

  1. 1. JVM的なナニカを話す -‐‑‒GC戦略略をそえて-‐‑‒ @shot6
  2. 2. というわけで •  おおたに、です •  @shot6 •  最近は? – Go,  Hackなどを触るなど
  3. 3. h"p://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html  
  4. 4. ヒープストラクチャの基本 予 約   予 約   予 約   Permanent   GeneraAon   (Class,  システム)   Old  GeneraAon   Eden   Young  GeneraAon   From(S0)   TO(S1)   •  Young  Generation •  新規で⽣生成されたオブジェクトの⼊入るスペース •  Eden,  Survivor(S0  and  S1) •  Old  Generation •  より⽣生存期間の⻑⾧長いオブジェクトの⼊入るスペース •  Permanent  Generation(Java8でMetaspaceへ) •  クラスやメソッド/Code  Cacheが⼊入るスペース
  5. 5. マイナーGC 予 約   予 約   予 約   Permanent   GeneraAon   (Class,  システム)   Old  GeneraAon   Eden   Young  GeneraAon   From   TO  
  6. 6. マイナーGC 予 約   予 約   予 約   Permanent   GeneraAon   (Class,  システム)   Old  GeneraAon   Eden   Young  GeneraAon   From   TO  
  7. 7. マイナーGC 予 約   予 約   予 約   Permanent   GeneraAon   (Class,  システム)   Old  GeneraAon   Eden   Young  GeneraAon   From   TO   Agingされて格納
  8. 8. マイナーGC 予 約   予 約   予 約   Permanent   GeneraAon   (Class,  システム)   Old  GeneraAon   Eden   Young  GeneraAon   From   TO   消去!  
  9. 9. マイナーGC 予 約   予 約   予 約   Permanent   GeneraAon   (Class,  システム)   Old  GeneraAon   Eden   Young  GeneraAon   From   TO   Swapされる(ハズ)
  10. 10. メジャーGC 予 約   予 約   予 約   Permanent   GeneraAon   (Class,  システム)   Old  GeneraAon   Eden   Young  GeneraAon   From   TO   Old/Permが増加してくるとメジャーGCが発⽣生する ・より影響のでかいStop  the  World ・パーマネント領領域(user  classloaderの参照切切れ)
  11. 11. 設定項⽬目の基本 予 約   予 約   予 約   Permanent   GeneraAon   (Class,  システム)   Old  GeneraAon   Eden   Young  GeneraAon   From   TO   -‐‑‒Xmx -‐‑‒XX:MaxPermSize -‐‑‒XX:PermSize -‐‑‒Xms -‐‑‒XX:MaxNewSize -‐‑‒XX:NewSize
  12. 12. 設定項⽬目の基本(2) 予 約   予 約   予 約   Permanent   GeneraAon   (Class,  システム)   Old  GeneraAon   Eden   Young  GeneraAon   From   TO   Young  :  Old -‐‑‒XX:NewRatio(2) Eden  :  Survivor(From+To) -‐‑‒XX:NewSurvivorRatio(8:1:1) Oldへのプロモーション -‐‑‒XX:MaxTeruningThreshold(15?)
  13. 13. JVMでの⼀一貫したパフォーマンス のためには •  マイナーGCを許容して、メジャーGCを   極⼒力力起こさせないのが⼤大事 – Concurrent  Mark  and  Sweep(CMS) – でも最近はG1もあるよ(-‐‑‒XX:+UseG1GC) – Garbage  First  Garbage  Collection •  Heap領領域を2048個のRegionに分割して管理理 •  0.5秒以内にGCが終わるよう推測モデルを持つ?
  14. 14. GCの基本戦略略 •  基本はConcurrent  Mark  Sweep(CMS) –  -‐‑‒XX:+UseConcMarkSweepGCで。 –  Young領領域はParallel  GC –  Old領領域はCMSで実施 •  CPUコアが少ないとき(1  or  2)はCMS  Incremental –  -‐‑‒XX:+UseConcMarkSweepGC  –XX: +CMSIncrementalMode –  ちょいちょいヒープを解放。Oldの解放時間は⻑⾧長めになる •  G1GCには期待値⼤大。ただどんくらい使われてる? –  -‐‑‒XX:UseG1GC –  6GB以上のヒープのときに最も有効 –  Java7で本格導⼊入
  15. 15. 比較   Collector   Young領域   Old領域   コンパクション   利点   欠点   コマンドLINE   Serial   Serial/STW   シリアルに CMS   あり   あんの?   -­‐XX: +UseSerialGC   Parallel   Parallel/ STW   シリアルに CMS   あり   Youngの Collect   Oldの遅さ   -­‐XX: +UseParallelGC   Parallel   CompacAng   Parallel/ STW   Parallelにコ ンパクション   あり   OldのCollect も早い   忘れたw   -­‐XX: +UseParallelOld GC     Concurrent   Mark   Sweep(CMS)   Parallel/ STW   ほぼ並行に Collectと Concurrent   Mark/IniAal   MarkとRemarkで はSTW   なし   OldでもSTW が短い   並列Collect中 にCPUくう。 Youngでの Pause多い。 追加のヒープ   -­‐XX: +UseConcMarkS weepGC     CMS   Increment   Parallel/ STW   上と同じ   なし   上と同様だ がより少な いCPUで効 果的   上記同様   -­‐XX: +CMSIncrement alMode     G1   リージョン分割(one  region   1MB)して、Markしガーベー ジ収集。   ほぼあり   予測可能な STW(<  0.5   sec)、でかい ヒープで有効   スループット の劣化   -­‐XX:+UseG1GC   STW  =  Stop  the  World  
  16. 16. その他のTips •  JVMエルゴノミクスは避けましょう –  -‐‑‒serverで明⽰示的な指定を –  Server-‐‑‒class  Machine  Detection •  http://docs.oracle.com/javase/7/docs/technotes/ guides/vm/server-‐‑‒class.html •  Parallel  Collector/CMS/G1GC向け –  -‐‑‒XX:ParallelGCThreads –  -‐‑‒XX:MaxGCPauseMillis
  17. 17. ご参考 •  Java  SE  6  HotSpot  Virtual  Machine   Garbage  Collection  Tuning –  http://www.oracle.com/technetwork/java/ javase/gc-‐‑‒tuning-‐‑‒6-‐‑‒140523.html   •  G1GCなどの各オプション –  http://www.oracle.com/technetwork/java/ javase/tech/vmoptions-‐‑‒jsp-‐‑‒140102.html •  Java  Garbage  Collection  Basics –  http://www.oracle.com/webfolder/ technetwork/tutorials/obe/java/gc01/ index.html
  18. 18. ありがとうございました

×