楽して jvm を学びたい #jjug
DESCRIPTION
JJUG ナイト・セミナー 「ビール片手にLT&納涼会」発表スライドです。 答えはソースで!TRANSCRIPT
![Page 1: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/1.jpg)
楽して JVM を学びたいKUBOTA Yuji
@sugarlife
1
![Page 2: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/2.jpg)
KUBOTA Yuji / @sugarlife
● IcedTea committer (HeapStats) ● OpenJDK (icedtea) サポート
● JavaOne2014 で喋る予定!●難聴なので右耳しか聞こえません。
2
![Page 3: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/3.jpg)
JVM
面倒&面妖3
![Page 4: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/4.jpg)
面倒見る必要がぼちぼちある
●トラブルシューティング
●パフォーマンスチューニング
●セキュリティアップデート
4
![Page 5: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/5.jpg)
JVMを学ぶ必要がある
どうやって?
5
![Page 6: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/6.jpg)
知の高速道路例
●先達の知見
●書籍、blog
●Oracle ドキュメント6
![Page 7: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/7.jpg)
最終的には
諦めてソースを読む
7
![Page 8: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/8.jpg)
ソースを…
http://hg.openjdk.java.net
/jdk9/jdk98
![Page 9: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/9.jpg)
読む?
*java:6421987行*cpp:723728行*hpp:223818行
9
![Page 10: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/10.jpg)
迷宮
水先案内人が欲しい
10
![Page 11: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/11.jpg)
諦めよう
11
案内人は居なかった
![Page 12: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/12.jpg)
私の諦め方
基本や最悪な事象を軸に調べていく
12
![Page 13: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/13.jpg)
1.メモリ
問題が起きやすいのはメモリ回り
13
![Page 14: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/14.jpg)
1.メモリ
Xmx / Xms でメモリ確保量を指定している
14
![Page 15: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/15.jpg)
1.メモリ
JVMはどのタイミングでどうやって確保して
いる?15
![Page 16: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/16.jpg)
問題 1
Xmx / Xms は同値か別値、どちらが良い?
16
![Page 17: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/17.jpg)
2. GC
最悪の敵
17
![Page 18: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/18.jpg)
2. GC
Stop The World
18
![Page 19: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/19.jpg)
2. GC
CMS GC は アプリケーションスレッドを動かしつつ GC スレッドを動かしている
19
![Page 20: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/20.jpg)
2. GC
でも止まる。
20
![Page 21: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/21.jpg)
問題 2
STWが発生するフェーズはどこか、どうやって止めているか
21
![Page 22: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/22.jpg)
1 と 2 の関連
1. のメモリ確保周りの処理に失敗した場合に GC
が起動される。そこから辿れる。
22
![Page 23: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/23.jpg)
3. Full GC
最悪の敵 その2
23
![Page 24: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/24.jpg)
3. Full GC
CMS GC でも発生する。なんで?
24
![Page 25: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/25.jpg)
3. Full GC
Oracle DocumentによるとConcurrent
mode failure らしい25
![Page 26: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/26.jpg)
問題 3
Concurrent mode failure の発生条件は何か。その後何が起動
されるか。26
![Page 27: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/27.jpg)
2 と 3 の関連
2.で調べてる最中にある
27
![Page 28: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/28.jpg)
少しずつ
メモリ回りから自分の地図を広げていく
28
![Page 29: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/29.jpg)
そしてどうなった
五里霧中
29
![Page 30: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/30.jpg)
諦め方を
是非共有し合いたい平和な時に諦めた方が良い
30
![Page 31: 楽して JVM を学びたい #jjug](https://reader030.vdocuments.site/reader030/viewer/2022012405/54b737d94a7959404e8b4629/html5/thumbnails/31.jpg)
おまけ1. XmxとXmsは同値の方が、
mallocのコストが安い。2. Initial-markとRemark。"
3. CMS回ってる時にCMSが再び呼び出された時。
31