31
楽して JVM を学びたい KUBOTA Yuji @sugarlife 1

楽して JVM を学びたい #jjug

Embed Size (px)

DESCRIPTION

JJUG ナイト・セミナー 「ビール片手にLT&納涼会」発表スライドです。 答えはソースで!

Citation preview

Page 1: 楽して JVM を学びたい #jjug

楽して JVM を学びたいKUBOTA Yuji

@sugarlife

1

Page 2: 楽して JVM を学びたい #jjug

KUBOTA Yuji / @sugarlife

● IcedTea committer (HeapStats) ● OpenJDK (icedtea) サポート

● JavaOne2014 で喋る予定!●難聴なので右耳しか聞こえません。

2

Page 3: 楽して JVM を学びたい #jjug

JVM

面倒&面妖3

Page 4: 楽して JVM を学びたい #jjug

面倒見る必要がぼちぼちある

●トラブルシューティング

●パフォーマンスチューニング

●セキュリティアップデート

4

Page 5: 楽して JVM を学びたい #jjug

JVMを学ぶ必要がある

どうやって?

5

Page 6: 楽して JVM を学びたい #jjug

知の高速道路例

●先達の知見

●書籍、blog

●Oracle ドキュメント6

Page 7: 楽して JVM を学びたい #jjug

最終的には

諦めてソースを読む

7

Page 8: 楽して JVM を学びたい #jjug

ソースを…

http://hg.openjdk.java.net

/jdk9/jdk98

Page 9: 楽して JVM を学びたい #jjug

読む?

*java:6421987行*cpp:723728行*hpp:223818行

9

Page 10: 楽して JVM を学びたい #jjug

迷宮

水先案内人が欲しい

10

Page 11: 楽して JVM を学びたい #jjug

諦めよう

11

案内人は居なかった

Page 12: 楽して JVM を学びたい #jjug

私の諦め方

基本や最悪な事象を軸に調べていく

12

Page 13: 楽して JVM を学びたい #jjug

1.メモリ

問題が起きやすいのはメモリ回り

13

Page 14: 楽して JVM を学びたい #jjug

1.メモリ

Xmx / Xms でメモリ確保量を指定している

14

Page 15: 楽して JVM を学びたい #jjug

1.メモリ

JVMはどのタイミングでどうやって確保して

いる?15

Page 16: 楽して JVM を学びたい #jjug

問題 1

Xmx / Xms は同値か別値、どちらが良い?

16

Page 17: 楽して JVM を学びたい #jjug

2. GC

最悪の敵

17

Page 18: 楽して JVM を学びたい #jjug

2. GC

Stop The World

18

Page 19: 楽して JVM を学びたい #jjug

2. GC

CMS GC は アプリケーションスレッドを動かしつつ GC スレッドを動かしている

19

Page 20: 楽して JVM を学びたい #jjug

2. GC

でも止まる。

20

Page 21: 楽して JVM を学びたい #jjug

問題 2

STWが発生するフェーズはどこか、どうやって止めているか

21

Page 22: 楽して JVM を学びたい #jjug

1 と 2 の関連

1. のメモリ確保周りの処理に失敗した場合に GC

が起動される。そこから辿れる。

22

Page 23: 楽して JVM を学びたい #jjug

3. Full GC

最悪の敵 その2

23

Page 24: 楽して JVM を学びたい #jjug

3. Full GC

CMS GC でも発生する。なんで?

24

Page 25: 楽して JVM を学びたい #jjug

3. Full GC

Oracle DocumentによるとConcurrent

mode failure らしい25

Page 26: 楽して JVM を学びたい #jjug

問題 3

Concurrent mode failure の発生条件は何か。その後何が起動

されるか。26

Page 27: 楽して JVM を学びたい #jjug

2 と 3 の関連

2.で調べてる最中にある

27

Page 28: 楽して JVM を学びたい #jjug

少しずつ

メモリ回りから自分の地図を広げていく

28

Page 29: 楽して JVM を学びたい #jjug

そしてどうなった

五里霧中

29

Page 30: 楽して JVM を学びたい #jjug

諦め方を

是非共有し合いたい平和な時に諦めた方が良い

30

Page 31: 楽して JVM を学びたい #jjug

おまけ1. XmxとXmsは同値の方が、

mallocのコストが安い。2. Initial-markとRemark。"

3. CMS回ってる時にCMSが再び呼び出された時。

31