Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Scalaエンジニアなら知っておきたいJVMの話
Search
Ryuhei Ishibashi
July 02, 2021
Programming
79
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Scalaエンジニアなら知っておきたいJVMの話
Javaを経由しないでScalaにはいっちゃった人向けにJavaやJVMについて基礎的な話をしました。
Ryuhei Ishibashi
July 02, 2021
More Decks by Ryuhei Ishibashi
See All by Ryuhei Ishibashi
QA素人がゼロからQA組織を立ち上げるno
rysh
0
170
Essential Refactoring for Scala with IDE
rysh
0
37
Other Decks in Programming
See All in Programming
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
330
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.2k
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
150
symfony/aiとlaravel/boost
77web
0
140
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
270
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
200
共通化で考えるべきは、実装より公開する型だった
codeegg
0
260
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
1.1k
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
230
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
150
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
2
600
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
260
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
50
15k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
610
The SEO identity crisis: Don't let AI make you average
varn
0
520
The Language of Interfaces
destraynor
162
27k
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
220
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
810
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
180
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Music & Morning Musume
bryan
47
7.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
400
Transcript
ScalaΤϯδχΞͳΒ ͓͖͍ͬͯͨ JVMͷ
Javaͷ֓ཁ Java Programing Language Java Runtime Edition Java Development Kit
Java Virtual Machine
Java Runtime Edition JDK11͔Β୯ಠͰͷΛഇࢭ γεςϜͰJREΛڞ༗͢Δํ͔ΒΞϓϦέʔγϣϯ ݸผʹόϯυϧ͢Δํ JREαΠζJava9ͷProject JigsawͰղܾͨͨ͠Ί
Java Development Kit ։ൃʹؔΘΔπʔϧҰࣜΛἧ͑ͨηοτ ͍ͦ͏ͳͷ JavaτϥϒϧγϡʔςΟϯάɺϓϩϑΝΠϦϯάɺϞχλϦϯάɺ͓Α ͼཧπʔϧ(jcmdɺjconsoleɺjmcɺjvisualvm) ϞχλϦϯάɾπʔϧ(jpsɺjstatɺjstatd) τϥϒϧγϡʔςΟϯάɾπʔϧ(jinfoɺjhatɺjmapɺjsadebugdɺjstack) JavaMissionControle(jmc)VisualVMͷ্Ґޓ
Java Virtual Machine ΫϥεϑΝΠϧ(όΠτίʔυ)Λػցޠʹม࣮ͯ͠ߦ ༷The Java Virtual Machine Specificationʹ͋Δ OpenJDK࣮ͷҰͭɻΞΫςΟϒͳͷͰ11ݸ΄Ͳ͋Δ
Azulͱ͍͏ձࣾͷZing JVM͕࠷ڧɻͪΖΜ༗ྉɻ ScalaScalaϑΝΠϧΛJavaΫϥεϑΝΠϧʹมͯ͠JVM Ͱ࣮ߦ͍ͯ͠Δ
HotSpot JVMͷΞʔΩςΫνϟ
࣮ߦϓϩηε 1. javaϑΝΠϧΛίϯύΠϧͯ͠ΫϥεϑΝΠϧΛੜ 2. όΠτίʔυ(ΫϥεϑΝΠϧ)ͷΠϯλʔϓϦλͱ͠ ͯಈ࡞ 3. ౷ܭใͱόΠτίʔυΛͱʹόοΫάϥϯυ Ͱ࠷దԽ(JITίϯύΠϧ)
JITίϯύϧ 1. JITίϯύΠϧͷத̎ஈ֊͋Δ(C1,C2) 2. ༧ଌ͕֎ΕͨΒ࠷దԽͯ͠Γ͢ 3. ओͳ࠷దԽํ๏ΠϯϥΠϯԽ 4. σϑΥϧτͰ1ສճ࣮ߦͨ͠ޙʹͦͷϝιουΛί ϯύΠϧ(CompileThresholdͰมߋՄೳ)
࠷దԽͷ֬ೝ 1. ࠷దԽͷใΛϩάʹग़ྗ(-XX:+PrintCompilation) 2. JITίϯύΠϥΛΘͳ͍(-Djava.compiler=none) 3. JITWatch (https://github.com/AdoptOpenJDK/ jitwatch)
Garbage Collection ϝϞϦͷׂΓͯɾղ์ΛࣗಈԽ ϝϞϦϦʔΫΛࢭ ͋ΔఔϦιʔεΛඞཁͱ͢Δ
GC͕ʹͳΔέʔε
جຊతͳGCΞϧΰϦζϜ ࢀরΧϯτ ίϐʔGC ϚʔΫɾΞϯυɾεΠʔϓ
JVMͰ͑ΔGC γϦΞϧGC ύϥϨϧGC CMS G1GC ZΨϕʔδɾίϨΫλ
γϦΞϧGC ੈผGC YoungɿϚʔΫɾίϯύΫτ(ίϐʔGC?) OldɿϚʔΫɾίϯύΫτ γϯάϧεϨουڥͰ࠷ޮ͕ྑ͍ ̍̌̌MBҎԼͷڥͰϚϧνεϨουͰޮ͕ྑ͍
ύϥϨϧGC γϦΞϧGCΛฒߦॲཧͰ͖ΔΑ͏ʹͨ͠ͷ ϚϧνεϨουڥͰStop the WorldʹΑΔఀࢭ࣌ؒ ཁ͕݅ͳ͍߹࠷ޮ͕ྑ͍
CMS ύϥϨϧGCͷOld෦ΛϚʔΫɾίϯύΫτ͔ΒίϯΧϨϯτɾϚʔΫɾεΠʔϓ ʹมߋͨ͠ͷ ΞϓϦέʔγϣϯͷಛੑʹ߹ͬͨύϥϝʔλઃఆͰ΄ͱΜͲFull GCΛൃੜͤͣ͞ʹ ӡ༻͢Δ͜ͱՄೳ ఀࢭ࣌ؒώʔϓαΠζʹൺྫ Stop the WorldΛ͏Full
GC͕ൃੜ͢Δ݅ OldྖҬͷஅยԽ͕ਐΜͩͱ͖ ϝϞϦར༻͕ϚʔΫΞϯυεΠʔϓʹΑΔղ์Λ্ճͬͯྖҬ͕Γͳ ͘ͳͬͨ࣌
G1GC Ϧʔδϣϯ୯ҐͷੈผGC ఀࢭ͕࣌ؒώʔϓαΠζʹൺྫ͠ͳ͍ Ұ࣌ఀࢭͷඪ࣌ؒΛઃఆ͢Δͱ౷ܭใ͔Βదͨ͠ύϥϝʔλΛબͯ͘͠Ε Δ Stop the WorldΛ͏Full GC͕ൃੜ͢Δ݅ concurrent
mode failureͷൃੜ ঢ֨ɾҠಈͷࣦഊ ڊେΦϒδΣΫτͷׂΓͯͷࣦഊ
ZGC ڊେͳώʔϓ(ςϥόΠτ)ͰϨΠςϯγ(̍̌mඵ ະຬ) ੈཧ͠ͳ͍ɾϦʔδϣϯܕͷϝϞϦཧ ฒྻίϯύΫγϣϯ
ࢀߟࢿྉ Java Garbage Collection Basics JDKπʔϧͱϢʔςΟϦςΟ Introduction to JIT Compiler
in JVM Understanding jvm gc advanced HotSpot Virtual MachineΨϕʔδɾίϨΫγϣϯɾνϡʔχϯάɾΨΠυ G1GC G1GCνϡʔχϯά ͬ͘͟ΓΘ͔ͬͨؾʹͳΔϞμϯGCೖ