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
0
360
JVM Internals Demystified
Confoo 2015
hannelita
February 19, 2015
Tweet
Share
More Decks by hannelita
See All by hannelita
Java EE 8 - Future, Wishes and Predictions
hannelita
1
200
Eletrônica
hannelita
0
180
Cassandra Meetup
hannelita
0
61
Our Daily Graphs written in Ruby and Neo4j
hannelita
1
170
Wildfly em alta disponibilidade
hannelita
0
250
Helios - o backend pra Mobile que você precisava <3
hannelita
0
120
Neo4j - Dia a dia com grafos, Neo4j e Ruby
hannelita
1
140
Swift - uma fama repentina
hannelita
1
140
Curso relâmpago de eletrônica básica para desenvolvedores
hannelita
1
230
Other Decks in Technology
See All in Technology
動画データのポテンシャルを引き出す! Databricks と AI活用への奮闘記(現在進行形)
databricksjapan
0
160
How to achieve interoperable digital identity across Asian countries
fujie
0
140
Findy Team+のSOC2取得までの道のり
rvirus0817
0
500
【Kaigi on Rails 事後勉強会LT】MeはどうしてGirlsに? 私とRubyを繋いだRail(s)
joyfrommasara
0
170
AWS 잘하는 개발자 되기 - AWS 시작하기: 클라우드 개념부터 IAM까지
kimjaewook
0
120
"プロポーザルってなんか怖そう"という境界を超えてみた@TSUDOI by giftee Tech #1
shilo113
0
150
SwiftUIのGeometryReaderとScrollViewを基礎から応用まで学び直す:設計と活用事例
fumiyasac0921
0
150
from Sakichi Toyoda to Agile
kawaguti
PRO
1
100
ガバメントクラウドの概要と自治体事例(名古屋市)
techniczna
2
200
多様な事業ドメインのクリエイターへ 価値を届けるための営みについて
massyuu
1
470
LLM時代にデータエンジニアの役割はどう変わるか?
ikkimiyazaki
6
1.1k
生成AIで「お客様の声」を ストーリーに変える 新潮流「Generative ETL」
ishikawa_satoru
1
360
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
Designing for Performance
lara
610
69k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
How to Think Like a Performance Engineer
csswizardry
27
2k
KATA
mclloyd
32
15k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
54
3k
How to Ace a Technical Interview
jacobian
280
24k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
970
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
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