Upload
yu-kitajima
View
56
Download
2
Embed Size (px)
Citation preview
G1GCのG1とはこれいかに!~fun-tech meetup #5
出ましたJava9記念 Javaのあれこれ入門編~
(2017/11/10)@kitaji0306
さらっと自己紹介(通称:キタジー)
● 株式会社オープンストリーム
○ ITサービスマネジメント本部
■ システムライフサイクルマネジメント部
● Javaエンジニア
○ 一時期 インフラエンジニア
■ OracleのインストールやRACの構築等
● OORer○ ONE OK ROCKer
■ ワンオク好き
あじぇんだ
● GCとは
● Javaの主なGC● G1GCの特徴
● まとめ
そうだ JJUG CCC 2017 FALL 行こう
2017/11/18(土)
GCとは
GCとは
● ガベージコレクション
● メモリのお掃除やさん
● JavaはJVMがお掃除やさんをちゃんと雇ってるんです
※画像はgeechsマガジンさんのHPから拝借
もしGCが無かったら
● 掃除しなくてゴミ部屋になっちゃったり
○ メモリーリーク
● 自分でゴミ掃除したらゴミ以外も捨てちゃったり
○ 不具合!!!
● 怖くてゴミ出せない!!
※画像はgeechsマガジンさんのHPから拝借
STW(GCを語る上で外せない言葉)
● Stop the Worldの略
● Javaのスレッドが止まる
● アプリケーションが止まる
※画像は。。。
Javaの主なGC
Java(HotSpot)における主なGCの種類
● シリアルGC● パラレルGC● CMSGC● G1GC
GCあるある
● GCの種類ってNewとかOldとか世代別のことでしょ?
○ 世代別GCもGCの方式の一つです
● メジャーGC(Full GC)中はSTWなんでしょ?
○ そうとは限らない
※画像は日本サード・パーティさんの HPから拝借
シリアルGC
● 名前の通りシングルスレッドでGC!
● 32bitでシングルコアのJava8以前ではデフォルト
○ もうそんな環境なかなかないと思いますが。。。
○ あえて指定しないとお目にかかれないのでは。。。
● STWが長い
※画像は日本サード・パーティさんの HPから拝借
パラレルGC
● 64bitのJava8以前ではデフォルト
● STWがシリアルGCよりは短い
● 多分、今Javaで一番多く利用されているGCだと
※画像は日本サード・パーティさんの HPから拝借
CMSGC(Java1.4.1から)
● コンカレント・マーク・スイープ
● アプリケーションとGCが同時に動いてる!
● STWがパラレルよりさらに短い
※画像は日本サード・パーティさんの HPから拝借
コンカレント?マーク?スイープ?
● マーク
○ まだ生きていると思われるオブジェクトにしるし
● スイープ
○ しるしのないオブジェクトは死亡
● コンカレント
○ それらを(アプリケーションと)平行してやるよ
G1GC(Java7から)
● Java9からデフォルトのGCとなった
● 詳細は後で説明するよ
※画像は日本サード・パーティさんの HPから拝借
ここでちょっと寄り道
自分のプロジェクトではどんなGCが利用されているにゃ?
G1GCの特徴
こんな特徴あるよ
● ゴミの多いところを予測して重点処理(収集と圧縮)
● 細かい単位(リージョン)の扱いで断片化しずらい
○ その点がCMSGCが非推奨となった理由?
● STWを最大停止時間で(ある程度)制御
○ MaxGCPauseMillis(デフォルトは200ms)
※画像は日本サード・パーティさんの HPから拝借
G1GCの光と影
● 光
○ STWが短い
■ 世界は殆ど止まらない!
○ 大容量ヒープ割り当てのオーバーヘッドが小
■ 64bitの広大なメモリ空間が効率よく使える!
● 影
○ 割り当てるメモリが多くないと効果が薄い?
■ マイクロなサービスには不向き!?
○ 処理が細かく多いのでCPU使用率が高くなる
■ アプリケーションのスループットに影響も!?
G1GCの使いどころ
● ヒープサイズが大きい(6GB以上)
● ほぼ一時停止しないでほしい環境(500ms以内)
● CMSGCやパラレルGCを利用していて下記のような状態
○ ライブオブジェクトが50%を占める
○ オブジェクトの割当て率、昇格率が大きく変化する
○ STWが0.5秒以上かかる
※オラクルのG1GCのページに指針が出ています
まとめ
GCについて
● Java9を利用するならG1GCのアルゴリズムは抑えよう
● 巨大なヒープを利用しつつ短いSTW万歳
● CMSGCサヨウナラ
G1GCのG1は細かいゴミ処理を優先した
ガベージファースト
それよりも言いたいこと…
みなさん
次は是非喋る側に!!
大変な事もあるけどきっと身になります!
ご清聴いただきありがとうございました!