Upload
yuji-kubota
View
1.653
Download
2
Embed Size (px)
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