楽して JVM を学びたい #jjug

Preview:

DESCRIPTION

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

Citation preview

楽して JVM を学びたいKUBOTA Yuji

@sugarlife

1

KUBOTA Yuji / @sugarlife

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

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

2

JVM

面倒&面妖3

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

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

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

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

4

JVMを学ぶ必要がある

どうやって?

5

知の高速道路例

●先達の知見

●書籍、blog

●Oracle ドキュメント6

最終的には

諦めてソースを読む

7

ソースを…

http://hg.openjdk.java.net

/jdk9/jdk98

読む?

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

9

迷宮

水先案内人が欲しい

10

諦めよう

11

案内人は居なかった

私の諦め方

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

12

1.メモリ

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

13

1.メモリ

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

14

1.メモリ

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

いる?15

問題 1

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

16

2. GC

最悪の敵

17

2. GC

Stop The World

18

2. GC

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

19

2. GC

でも止まる。

20

問題 2

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

21

1 と 2 の関連

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

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

22

3. Full GC

最悪の敵 その2

23

3. Full GC

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

24

3. Full GC

Oracle DocumentによるとConcurrent

mode failure らしい25

問題 3

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

されるか。26

2 と 3 の関連

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

27

少しずつ

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

28

そしてどうなった

五里霧中

29

諦め方を

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

30

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

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

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

31