JVM的なナニカを話す
-‐‑‒GC戦略略をそえて-‐‑‒
@shot6
というわけで
•  おおたに、です
•  @shot6
•  最近は?
– Go,  Hackなどを触るなど
h"p://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html	
  
ヒープストラクチャの基本
予
約	
  
予
約	
  
予
約	
  
Permanent	
  
GeneraAon	
  
(Class,	
  システム)	
  
Old	
  GeneraAon	
  
Eden	
  
Young	...
マイナーGC
予
約	
  
予
約	
  
予
約	
  
Permanent	
  
GeneraAon	
  
(Class,	
  システム)	
  
Old	
  GeneraAon	
  
Eden	
  
Young	
  Gen...
マイナーGC
予
約	
  
予
約	
  
予
約	
  
Permanent	
  
GeneraAon	
  
(Class,	
  システム)	
  
Old	
  GeneraAon	
  
Eden	
  
Young	
  Gen...
マイナーGC
予
約	
  
予
約	
  
予
約	
  
Permanent	
  
GeneraAon	
  
(Class,	
  システム)	
  
Old	
  GeneraAon	
  
Eden	
  
Young	
  Gen...
マイナーGC
予
約	
  
予
約	
  
予
約	
  
Permanent	
  
GeneraAon	
  
(Class,	
  システム)	
  
Old	
  GeneraAon	
  
Eden	
  
Young	
  Gen...
マイナーGC
予
約	
  
予
約	
  
予
約	
  
Permanent	
  
GeneraAon	
  
(Class,	
  システム)	
  
Old	
  GeneraAon	
  
Eden	
  
Young	
  Gen...
メジャーGC
予
約	
  
予
約	
  
予
約	
  
Permanent	
  
GeneraAon	
  
(Class,	
  システム)	
  
Old	
  GeneraAon	
  
Eden	
  
Young	
  Gen...
設定項⽬目の基本
予
約	
  
予
約	
  
予
約	
  
Permanent	
  
GeneraAon	
  
(Class,	
  システム)	
  
Old	
  GeneraAon	
  
Eden	
  
Young	
  G...
設定項⽬目の基本(2)
予
約	
  
予
約	
  
予
約	
  
Permanent	
  
GeneraAon	
  
(Class,	
  システム)	
  
Old	
  GeneraAon	
  
Eden	
  
Young	
...
JVMでの⼀一貫したパフォーマンス
のためには
•  マイナーGCを許容して、メジャーGCを  
極⼒力力起こさせないのが⼤大事
– Concurrent  Mark  and  Sweep(CMS)
– でも最近はG1もあるよ(-‐‑‒XX:...
GCの基本戦略略
•  基本はConcurrent  Mark  Sweep(CMS)
–  -‐‑‒XX:+UseConcMarkSweepGCで。
–  Young領領域はParallel  GC
–  Old領領域はCMSで実施
•  C...
比較	
  
Collector	
   Young領域	
   Old領域	
   コンパクション	
   利点	
   欠点	
   コマンドLINE	
  
Serial	
   Serial/STW	
   シリアルに
CMS	
  
...
その他のTips
•  JVMエルゴノミクスは避けましょう
–  -‐‑‒serverで明⽰示的な指定を
–  Server-‐‑‒class  Machine  Detection
•  http://docs.oracle.com/java...
ご参考
•  Java  SE  6  HotSpot  Virtual  Machine  
Garbage  Collection  Tuning
–  http://www.oracle.com/technetwork/java/
jav...
ありがとうございました
Upcoming SlideShare
Loading in …5
×

JVM的な何か@JVM Operation Casual Talk

6,366 views

Published on

0 Comments
27 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,366
On SlideShare
0
From Embeds
0
Number of Embeds
3,436
Actions
Shares
0
Downloads
2
Comments
0
Likes
27
Embeds 0
No embeds

No notes for slide

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. ありがとうございました

×