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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ryuhei Ishibashi
July 02, 2021
Programming
74
0
Share
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
160
Essential Refactoring for Scala with IDE
rysh
0
34
Other Decks in Programming
See All in Programming
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
3.5k
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
170
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
270
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.1k
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
120
AIエージェントと協働するCLI開発 — BunとOpenClawで学んだこと
yoshikouki
1
230
Moments When Things Go Wrong
aurimas
3
140
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
140
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
180
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
190
tsserverとは何だったのか、これからどうなるのか
nowaki28
1
440
inferと仲良くなる10分間
ryokatsuse
1
360
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Music & Morning Musume
bryan
47
7.2k
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Typedesign – Prime Four
hannesfritz
42
3.1k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.3k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
130
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
340
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
How to Ace a Technical Interview
jacobian
281
24k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
300
The Cost Of JavaScript in 2023
addyosmani
55
10k
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ೖ