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
JVM Internals Demystified
Search
hannelita
February 19, 2015
Technology
380
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JVM Internals Demystified
Confoo 2015
hannelita
February 19, 2015
More Decks by hannelita
See All by hannelita
Java EE 8 - Future, Wishes and Predictions
hannelita
1
230
Eletrônica
hannelita
0
200
Cassandra Meetup
hannelita
0
85
Our Daily Graphs written in Ruby and Neo4j
hannelita
1
190
Wildfly em alta disponibilidade
hannelita
0
280
Helios - o backend pra Mobile que você precisava <3
hannelita
0
130
Neo4j - Dia a dia com grafos, Neo4j e Ruby
hannelita
1
170
Swift - uma fama repentina
hannelita
1
160
Curso relâmpago de eletrônica básica para desenvolvedores
hannelita
1
280
Other Decks in Technology
See All in Technology
【CEDEC2026】『ウマ娘 プリティーダービー』 英語版のキャラクターの方言や口調をローカライズするための創造的アプローチ
cygames
PRO
1
240
侵入は突然に 〜 IoTマルウェアと悪用される家庭の機器 ~ / When Intrusion Strikes: IoT Malware and the Abuse of Home Devices
nttcom
0
1.6k
Head First モブプログラミング / Head First Mobprogramming
takaking22
10
12k
制約理論(ToC)入門 2026版
recruitengineers
PRO
8
2.2k
その“隠したつもり”が命取り ── 自前と平文をやめて「正解」に委ねる
kuroneko13
0
110
日本語を汚染するAI
route250
1
140
【CEDEC2026】『Relink』を拡張せよ - 『GRANBLUE FANTASY: Relink - Endless Ragnarok』の開発速度と品質を守るCI運用
cygames
PRO
0
150
20260807_第6回_関東kaggler会LT_claw系bot xangiと始める、"寂しくない" kaggle
sugupoko
0
260
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
710
【CEDEC2026】コードレビュー支援ツール開発から学ぶ:LLMを用いた業務システムの実践的な運用設計と誤出力対策
cygames
PRO
0
670
Invisible to AI? Making TYPO3 Sites Quotable by AI Search Systems
wolfgangwagner
0
190
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
6
1.1k
Featured
See All Featured
Site-Speed That Sticks
csswizardry
13
1.4k
The Cult of Friendly URLs
andyhume
79
7k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
The Limits of Empathy - UXLibs8
cassininazir
1
600
Designing Powerful Visuals for Engaging Learning
tmiket
1
490
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
240
Embracing the Ebb and Flow
colly
88
5.1k
My Coaching Mixtape
mlcsv
0
220
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
660
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
430
Darren the Foodie - Storyboard
khoart
PRO
3
3.6k
Transcript
༼ つ ◕_◕ ༽つ JVM Internals ༼ つ ◕_◕ ༽つ
Demystified! ( ͡° ͜ ʖ ͡°) ༼ つ ◕_◕ ༽つ ༼ つ ◕_◕ ༽つ
What we will NOT see here • Pure JVM boring
theory • Assembly fear stuff • 0xFF • 0100111
What we will see here • Why internals? • Method
Area • Heap • Threads • Further reading • Funny Gifs and images!
Bonjour
Hi! I’m Hanneli São Paulo, Brazil
Hi! I’m Hanneli Meanwhile here in Canada
None
No advanced stuff Simplified way
If you understand computer architecture classes You understand JVM
Why do I Need to Understand Internals?
We live in a simplified era
All externalised
All externalised (Almost)Normal dressed developers (external)
Do I need internal details?
Developer showing internal details
Memory analyse • Help! Perm gem problems! • Search for
memory leaks • Memory analyser tools • Understand how JVM works
What’s the relation between: JVM Memory Bytecode Assembly Low Level
OpCode Operator Operation Java
None
How do I get started? • http://www.artima.com/insidejvm/ed2/jvmP.html
How do I get started?
JVM - Low level Assembly
I know how to write Java code
༼ つ ◕_◕ ༽つ classes ༼ つ ◕_◕ ༽つ
What happens when I invoke a method in Java
WAIT How many kinds of methods do you know?
2 types of methods Clazz.method(); object.method(); static instance
From Assembly classes: op code + operand operation + operand
operation + operand add r1, r2 public int add(int r1,
int r2) operation operators == parameters
Method calls in JVM static instance operation + operand operation
+ operand invokevirtual invokestatic
Where are the Operands? Special place
Where are the Operands? Real place
Symbolic place called pool
JVM keeps this fake references It’s a strategy to deal
with dynamic linking
While JVM does need the content of this fake box
(pool), it remais unresolved
Each fake reference for each method is unique
Each fake reference for each method is unique So JVM
can replace the fake calls with true invokes.
Back to methods Clazz.method(int a); object.method(parameter); class Lol { public
int myMethod(int a){ // } } Class stuff
Method Area JVM Class stuff Class stuff Class stuff Non-Heap
Code Cache Permanent Generation
Done? object
༼ つ ◕_◕ ༽つ object ༼ つ ◕_◕ ༽つ
Method Area JVM Class stuff Class stuff Class stuff Non-Heap
Permanent Generation HEAP Permanent Generation object object object
Young gen JVM - The Heap HEAP Lol lol =
new LOL(); lol object object object
JVM - The Heap HEAP Permanent Generation object object object
object object object object object object object object object object object object object Hey, Im’m heavy
JVM - The Heap HEAP Permanent Generation object object object
object object object object object object object object object object object object object Checks all the objects on the heap Garbage collector
Old gen Young generation JVM - The Heap HEAP object
object Eden lol Survivor object Will be taken for GC
Last step Where does my application run?
Last step public static void main(String[] args){ …}
༼ つ ◕_◕ ༽つ thread ༼ つ ◕_◕ ༽つ
JVM - Thread Thread Heap Non-Heap
JVM - Thread Thread Program Counter Stack Frame Frame Frame
Frame Frame Local variables [] Return Value Pointer to Method Area Pointer to Heap Area Operand Operand Operand Operand Stack
JVM - Sum up Program Counter Stack Frame Frame Frame
Frame Heap Non-Heap Object instances Class Stuff/ Method Area Similar to Computer Architecture
༼ つ ◕_◕ ༽つ JVM ༼ つ ◕_◕ ༽つ
( ͡° ͜ ʖ ͡°) JVM ( ͡° ͜ ʖ
͡°)
Thanks!! Questions? @hannelita
[email protected]
References • http://www.artima.com/insidejvm/ed2/jvmP.html • http://www.cubrid.org/blog/dev-platform/understanding-jvm-internals/ • http://architects.dzone.com/articles/understanding-jvm-internals • http://www.ourdailycodes.com/2013/09/inside-java-jvm-memory- structure-2.html
• http://javarevisited.blogspot.ca/2011/04/garbage-collection-in-java.html • http://www.slideshare.net/BalamuruganSoundararajan/invoke-dynamics • http://www.javaworld.com/article/2076949/learn-java/how-the-java-virtual- machine-handles-method-invocation-and-return.html • http://blog.jamesdbloom.com/JVMInternals.html#threads