SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
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は細かいゴミ処理を優先した
ガベージファースト
それよりも言いたいこと…
みなさん
次は是非喋る側に!!
大変な事もあるけど
きっと身になります!
ご清聴いただき
ありがとうございました!

Contenu connexe

Tendances

今から始めるApache Groovy
今から始めるApache Groovy今から始めるApache Groovy
今から始めるApache GroovyYasuharu Hayami
 
Groovyスクリプト"再"入門 起動編
Groovyスクリプト"再"入門 起動編Groovyスクリプト"再"入門 起動編
Groovyスクリプト"再"入門 起動編Yasuharu Hayami
 
マルチスレッド問題の特定と再現に頑張った話
マルチスレッド問題の特定と再現に頑張った話マルチスレッド問題の特定と再現に頑張った話
マルチスレッド問題の特定と再現に頑張った話LINE Corporation
 
GroovyのJSONで日付・時刻を扱う
GroovyのJSONで日付・時刻を扱うGroovyのJSONで日付・時刻を扱う
GroovyのJSONで日付・時刻を扱うYasuharu Hayami
 
GopherJS + Nashorn
GopherJS + NashornGopherJS + Nashorn
GopherJS + NashornTakuya Ueda
 
非ガチ勢「よし、Coffee script使おう!」
非ガチ勢「よし、Coffee script使おう!」非ガチ勢「よし、Coffee script使おう!」
非ガチ勢「よし、Coffee script使おう!」Muyuu Fujita
 
Java event impression
Java event impressionJava event impression
Java event impressionOgataAyaka
 
ぼっちーむ開発
ぼっちーむ開発ぼっちーむ開発
ぼっちーむ開発yowasou
 
Groovyクイズ(計算編)
Groovyクイズ(計算編)Groovyクイズ(計算編)
Groovyクイズ(計算編)Yasuharu Hayami
 
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)parrotstudio
 
Gitはじめの一歩
Gitはじめの一歩Gitはじめの一歩
Gitはじめの一歩Ayana Yokota
 

Tendances (13)

今から始めるApache Groovy
今から始めるApache Groovy今から始めるApache Groovy
今から始めるApache Groovy
 
Groovyスクリプト"再"入門 起動編
Groovyスクリプト"再"入門 起動編Groovyスクリプト"再"入門 起動編
Groovyスクリプト"再"入門 起動編
 
マルチスレッド問題の特定と再現に頑張った話
マルチスレッド問題の特定と再現に頑張った話マルチスレッド問題の特定と再現に頑張った話
マルチスレッド問題の特定と再現に頑張った話
 
今更GWTで遊ぶぜ!
今更GWTで遊ぶぜ!今更GWTで遊ぶぜ!
今更GWTで遊ぶぜ!
 
JsonSlurperの話
JsonSlurperの話JsonSlurperの話
JsonSlurperの話
 
GroovyのJSONで日付・時刻を扱う
GroovyのJSONで日付・時刻を扱うGroovyのJSONで日付・時刻を扱う
GroovyのJSONで日付・時刻を扱う
 
GopherJS + Nashorn
GopherJS + NashornGopherJS + Nashorn
GopherJS + Nashorn
 
非ガチ勢「よし、Coffee script使おう!」
非ガチ勢「よし、Coffee script使おう!」非ガチ勢「よし、Coffee script使おう!」
非ガチ勢「よし、Coffee script使おう!」
 
Java event impression
Java event impressionJava event impression
Java event impression
 
ぼっちーむ開発
ぼっちーむ開発ぼっちーむ開発
ぼっちーむ開発
 
Groovyクイズ(計算編)
Groovyクイズ(計算編)Groovyクイズ(計算編)
Groovyクイズ(計算編)
 
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
 
Gitはじめの一歩
Gitはじめの一歩Gitはじめの一歩
Gitはじめの一歩
 

20171110 fun-tech #5 g1 gc