Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JVM入門
 -Javaプログラムが動く仕組み-

Kinoko
November 23, 2019

JVM入門
 -Javaプログラムが動く仕組み-

2019/11/23 JJUG CCC 2019 Fall - 日本Javaユーザーグループ 登壇資料です。

Kinoko

November 23, 2019
Tweet

More Decks by Kinoko

Other Decks in Technology

Transcript

  1. JDK‧JREとJVMの関係 • JRE(Java Runtime Environment) • JavaΛ࣮ߦ͢ΔͨΊʹඞཁͳιϑτ΢ΣΞηοτ • JVMΛؚΉ •

    JDK(Java Development Kit) • Javaͷιϑτ΢ΣΞ։ൃΛߦ͏ͨΊʹඞཁͳιϑτ΢ΣΞ ηοτ • JREΛؚΉ
  2. HotSpotVMのGCの種類 • γϦΞϧܕ • ύϥϨϧܕ • CMS • G1 ※

    Java にはShenandoah という新しいGCが実験的に追加されているそうです。 基本はJVM任せでOKだが、
 シビアなチューニングが必要な場合は
 それぞれのメリット‧デメリットを踏まえて選択する。
 (スループット重視かレスポンス重視か‧‧‧)
  3. Full GCは時間がかかる 2019-07-18T07:28:35.759-0900: 53.145: [GC (Allocation Failure) [PSYoungGen: 1153507K->190965K(1768960K)] 1400776K->506242K(2118656K),

    0.3026525 secs] [Times: user=2.55 sys=0.14, real=0.31 secs] 2019-07-18T07:28:36.064-0900: 53.450: [Full GC (Ergonomics) [PSYoungGen: 190965K->190932K(1768960K)] [ParOldGe 315276K->290297K(610816K)] 506242K->481229K(2379776K), [Metaspace: 2676K->2676K(1056768K)], 4.7517463 secs] [Times: user=29.92 sys=0.06, real=4.75 secs] ্ͷϚΠφʔGC ɾɾɾ 0.31 secs
 ԼͷFull GC ɾɾɾ 4.75 secs
  4. ヒープダンプ • ಛఆͷ࣌ࠁʹώʔϓ಺ʹؚ·ΕΔ͢΂ͯͷΦϒ δΣΫτͷεφοϓγϣοτ java -Xms600m -Xmx800m -Xloggc:gc.log -XX:+PrintGCDetails -XX:

    +PrintGCDateStamps -XX:+HeapDumpOnOutOfMemoryError Main -XX:+HeapDumpOnOutOfMemoryError
 ɾɾɾ OOMEൃੜ࣌ʹώʔϓμϯϓΛग़ྗ
  5. 参考資料 • JavaԾ૝Ϛγϯ࢓༷ (The Java series) • ಺༰͕ݹ͍ͷͰ஫ҙ • JavaύϑΥʔϚϯενϡʔχϯά

    ୈ2൛ • JavaͷϓϩάϥϜ͸Ͳ͏΍ͬͯಈ͍͍ͯΔͷ? JVMฤ https:// www.slideshare.net/skrb/java-jvm • JavaͷϓϩάϥϜ͸Ͳ͏΍ͬͯಈ͍͍ͯΔͷ? GCฤ https:// www.slideshare.net/skrb/java-gc-47402594
  6. • OutOfMemoryError ͷௐ΂ํ - Qiita https://qiita.com/opengl-8080/ items/64152ee9965441f7667b • Java͸ͲͷΑ͏ʹಈ͘ͷ͔ʙਤղͰΘ͔ΔJVMͷ࢓૊Έɿ࿈ࡌʛ gihyo.jp

    … ٕज़ධ࿦ࣾ http://gihyo.jp/dev/serial/01/jvm-arc • ʮϝϞϦʔΛҙࣝͯ͠ΈΑ͏ʯୈ2ճɹGCͷ࢓૊ΈΛཧղ͢Δ | ೔ܦ xTECHʢΫϩεςοΫʣ https://tech.nikkeibp.co.jp/it/article/ COLUMN/20060612/240657/?rt=nocnt • ·͡ΊʹJVMνϡʔχϯά: ୈ1ճ ·ͣ͸ݱঢ়֬ೝ https:// x1.inkenkun.com/archives/367