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.
マイナーGC
予
約
予
約
予
約
Permanent
GeneraAon
(Class,
システム)
Old
GeneraAon
Eden
Young
GeneraAon
From
TO
6.
マイナーGC
予
約
予
約
予
約
Permanent
GeneraAon
(Class,
システム)
Old
GeneraAon
Eden
Young
GeneraAon
From
TO
7.
マイナーGC
予
約
予
約
予
約
Permanent
GeneraAon
(Class,
システム)
Old
GeneraAon
Eden
Young
GeneraAon
From
TO
Agingされて格納
8.
マイナーGC
予
約
予
約
予
約
Permanent
GeneraAon
(Class,
システム)
Old
GeneraAon
Eden
Young
GeneraAon
From
TO
消去!
9.
マイナーGC
予
約
予
約
予
約
Permanent
GeneraAon
(Class,
システム)
Old
GeneraAon
Eden
Young
GeneraAon
From
TO
Swapされる(ハズ)
10.
メジャーGC
予
約
予
約
予
約
Permanent
GeneraAon
(Class,
システム)
Old
GeneraAon
Eden
Young
GeneraAon
From
TO
Old/Permが増加してくるとメジャーGCが発⽣生する
・より影響のでかいStop the World
・パーマネント領領域(user classloaderの参照切切れ)
11.
設定項⽬目の基本
予
約
予
約
予
約
Permanent
GeneraAon
(Class,
システム)
Old
GeneraAon
Eden
Young
GeneraAon
From
TO
-‐‑‒Xmx -‐‑‒XX:MaxPermSize
-‐‑‒XX:PermSize
-‐‑‒Xms
-‐‑‒XX:MaxNewSize
-‐‑‒XX:NewSize
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.
JVMでの⼀一貫したパフォーマンス
のためには
• マイナーGCを許容して、メジャーGCを
極⼒力力起こさせないのが⼤大事
– Concurrent Mark and Sweep(CMS)
– でも最近はG1もあるよ(-‐‑‒XX:+UseG1GC)
– Garbage First Garbage Collection
• Heap領領域を2048個のRegionに分割して管理理
• 0.5秒以内にGCが終わるよう推測モデルを持つ?