์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ์ฟ ํกDB
- ์
- ๋ฐ์ดํฐํ์
- ์คํ์์ด
- StringBuffer
- ์ฐ
- stream
- ๋ฐฑ์ค1874
- ์คํธ๋ฆผ
- ๋ฌธ์์ด
- ๋ฐฑ์ค11053 #ํ์ด์ฌ #python
- ํ๋ฐฉ์ฟผ๋ฆฌ
- ์คํ
- ๋ฐฑ์ค9093
- ๋ฐฑ์ค9012
- ์๋ฐ
- ์ฐ์ฐ์
- ์ฟ ํกERD
- ๋ฐฐ์ด
- StringBuilder
- ๋
- java
- Today
- Total
Tech Log ๐ ๏ธ
JVM ๋ด๋ถ๋ก ๋ณธ๋ฌธ
JVM์ด๋?
์๋ฐ๋ฅผ ๊ฐ์ง๊ณ ์ฝ๋ฉ์ ํ๋ ์ฌ๋์ ํ๋ฒ ์ฏค JVM ์ด๋ ๋จ์ด๋ฅผ ๋ค์ด์์ ๊ฒ์ด๋ค.
์ด JVM์ ์ปดํจํฐ์์ ์ํต์ ๋์์ฃผ๋๋ฐ, ์ด๋ค ์์ผ๋ก ์ํต์ ๋์์ฃผ๋ ์ง ๋จ๊ณ๋ณ๋ก ์ดํด๋ณด์
๋จผ์ ์ฐ๋ฆฌ๊ฐ ์ฝ๋ฉ์ ํ๊ณ ์ปดํ์ผ๋ฌ๋ฅผ ํตํด์ ์ปดํ์ผํ๋ฉด .class ํ์ผ์ด ์์ฑ๋๋ค.
ํ์ฌ ์ด ํด๋์ค ํ์ผ์ ๊ธฐ๊ณ์ด๊ฐ ์๋ ๋ฐ์ดํธ ์ฝ๋๋ก ๋์ด์๋ค.
๋ฐ์ดํธ ์ฝ๋๋ ๋ฌด์์ผ๊น?
JVM์ด ์ดํดํ ์ ์๋ ์ธ์ด๋ก ๋ณํ๋ ์๋ฐ ์์ค์ฝ๋์ด๋ค.
์ธ์ ์ด๋์๋ ์ด์์ฒด์ ์ ๊ด๊ณ์์ด JVM ์์์ ์คํ๋ ์ ์๋ค.
์๋ฅผ ๋ค์ด ์๋์ ์ฝ๋๋
System.out.println("Hello World");
๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๊ฐ์ง๋ค.
// class version 61.0 (61)
// access flags 0x21
public class Main {
// compiled from: Main.java
// access flags 0x1
public <init>()V
L0
LINENUMBER 8 L0
ALOAD 0
INVOKESPECIAL java/lang/Object.<init> ()V
RETURN
L1
LOCALVARIABLE this LMain; L0 L1 0
MAXSTACK = 1
MAXLOCALS = 1
// access flags 0x9
public static main([Ljava/lang/String;)V
L0
LINENUMBER 10 L0
GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
LDC "hello world"
INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/String;)V
L1
LINENUMBER 11 L1
RETURN
L2
LOCALVARIABLE args [Ljava/lang/String; L0 L2 0
MAXSTACK = 2
MAXLOCALS = 1
}
์ด๋ ๊ฒ ๋ฐ์ดํธ ์ฝ๋๋ก ๋ณํ ๋ ํด๋์ค ํ์ผ์ JVM์๊ฒ ์ ๋ฌํ๋ค.
JVM์ ์ด ํ์์ ํ์ผ์ ๊ฐ์ง๊ณ ์๋ค๊ฐ ํ์ํ ๋ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญ์ ํด์ ์ ๊ณตํ๋ค.
์ฆ JVM์ ์ปดํ์ผ๋ฌ์ ์ปดํจํฐ ์ฌ์ด์ ํต์ญ๊ฐ ๊ฐ์ ์ญํ ์ ํด์ค๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
๊ธฐ์กด c,c++ ์ปดํ์ผ๋ฌ์๋ ๋ญ๊ฐ ๋ค๋ฅผ๊น?
๊ทผ๋ฐ ํ๋ ์๋ฌธ์ ์ด ์๊ฒผ๋ค.
๋ค๋ฅธ ์ธ์ด๋ค๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฌธ์ฅ์ผ๋ก ์ฝ๋ฉ์ ํ๋๋ฐ ์ ์๋ฐ๋ง JVM์ด๋ ๊ฒ์ ์ฌ์ฉํ ๊น?
printf("Hello World");
๋ถ๋ช c์ธ์ด๋ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋ฉ์ ํ๋๋ฐ c์ธ์ด๋ JVM ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ ๊น?
๊ฒฐ๋ก ์ “์๋๋ค”
์ด๋ ์ธ์ด๊ฐ ์ถ๊ตฌํ๋ ๋ฐฉ์๊ณผ ์ปดํ์ผ ๋ฐฉ์์ ์ฐจ์ด ๋๋ฌธ์ด๋ค.
c๋ c++ ๊ฐ์ ์ธ์ด๋ค์ ์์ค์ฝ๋๋ฅผ ๊ธฐ๊ณ๊ฐ ๋ฐ๋ก ์์๋ค์ ์ ์๋ ๋ฐ์ด๋๋ฆฌ ์ฝ๋๋ก ๋ฒ์ญํด์ค๋ค.
์ฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ํ๋ ์๋๋ฐ ๋ชจ๋ ์ปดํจํฐ ์ด์์ฒด์ ๋ค์ด ๊ฐ์ ์ธ์ด๋ฅผ ์ฐ๋ ๊ฒ์ด ์๋๋ ๊ฑฐ๋ค.
์ด๋ก ์ธํด ๋งฅ์์ ์ปดํ์ผํ ํ์ผ์ด ์๋์ฐ๋ ๋ฆฌ๋ ์ค์์๋ ์ ๋์๊ฐ๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
์๋ํ๋ฉด c๋ c++์ ๊ฐ ๋จธ์ ์ ๋ง๋ ๊ธฐ๊ณ์ด๋ก ๋ฐ๋ก ์ปดํ์ผ์ ํด์ค๋ค.
์๋ ๋ฉด์์๋ ๋น ๋ฅผ ์ง ๋ชฐ๋ผ๋ ๋ค๋ฅธ ํ๊ฒฝ๊ณผ์ ํธํ์ฑ์ ๋จ์ด์ง๋ค.
ํ์ง๋ง JVM์ WORA ๋ผ๋ ์ฒ ํ์ ๊ธฐ๋ฐ์ ๋๊ณ ๋ง๋ค์ด์ก๋ค.
*WORA
Write Once Run Anywhere
ํ๋ฒ ์ฐ๊ณ ์ด๋๋ ๋์๊ฐ๋ค.
์ด๋ฐ ํน์ง ๋๋ถ์ ์๋ฐ๋ ์ด์์ฒด์ ๊ด๊ณ์์ด ๋์ผํ๊ฒ ์คํํ ์ ์๋ค.
JRE , JDK ์์ ๊ด๊ณ
JVM๊ณผ ์ด๋ฆ์ด ๋น์ทํ JRE,JDK๋ ์ด๋ค ๊ด๊ณ์ผ๊น?
๊ฒฐ๋ก ์ ์ผ๋ก ๋งํ๋ฉด JVM์ด ์ ์ผ ์๊ณ ์๋ก ํฌํจ๋๋ ๊ด๊ณ์ด๋ค.
์๋ ๊ทธ๋ฆผ์ ๋ณด์
JVM์ ์์์ ์ค๋ช ํ๋๋ก ๋ฐ์ดํธ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ฐ๊ฟ์ค๋ค.
JRE๋ ๋ฐํ์์ ํ์ํ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ , ํ์ผ๋ค์ ํฌํจํ๋ค.
JDK๋ ๊ทธ ์ธ ๊ฐ๋ฐ์ ํ์ํ ๋๋ฒ๊น , ์ปดํ์ผ ๊ฐ์ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๋ค.
JVM ํน์ง ์ ๋ฆฌ
- ์คํ ๊ธฐ๋ฐ์ ๊ฐ์ ๋จธ์ ์ด๋ค.
- ์ฌ๋ณผ๋ฆญ ๋ ํผ๋ฐ์ค
- ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ฐธ์กฐํ๋ ๊ฒ ์๋, ์ด๋ฆ์ผ๋ก ์ฐธ์กฐํ๋ค.
- ๊ฐ๋น์ง ์ปฌ๋ ์
- ๋ ์ด์ ํ ๋น๋์ง ์๋ ๋ฐ์ดํฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํด์ค๋ค.
- ๊ธฐ๋ณธ ์๋ฃํ์ ๋ช
ํํ๊ฒ ์ ์ํ์ฌ ํ๋ซํผ ๋
๋ฆฝ์ฑ ๋ณด์ฅ
- ๊ธฐ๋ณธ ์๋ฃํ์ ๋ช ํํ๊ฒ ์ ์ํ์ฌ ํธํ์ฑ์ ์ ์งํ๊ณ ํ๋ซํผ ๋ ๋ฆฝ์ฑ์ ๋ณด์ฅํ๋ค.
- ๋คํธ์ํฌ ๋ฐ์ดํธ ์ค๋
- ๋น ์๋์ ๋ฐ์ดํธ ์ฃผ์๋ฅผ ์ฌ์ฉํด์ ํต์ ์ ํ๋ค.
๋น ์๋์ ํ๊ธฐ๋ฒ์ด๋?
0x12 0x34 0x56 0x78 ๊ณผ ๊ฐ์ด ๋ฎ์ ์ฃผ์๋ถํฐ ๋์ ์ฃผ์ ์์ผ๋ก ํ๊ธฐํ๋ ๋ฐฉ์
JVM ๋ช ์ธ
JVM ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์์๋ค.
To implement the Java Virtual Machine correctly, you need only be able to
read the class file format and correctly perform the operations specified therein. Implementation details that are not part of the Java Virtual Machine's specification would unnecessarily constrain the creativity of implementors.
์์ฝ์ ํด๋ณด๋ฉด , ๊ตฌํ์์ ์ฐฝ์์ฑ์ ์ ํดํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ธ ๋ช ์ธ๋ฅผ ์ ์ธํ ์ธ์ธํ ๋ถ๋ถ์ ์ ํ์ง ์์๋ค๋ ๊ฒ์ด๋ค.
ํํ ํ๋๋ง ์ถ์ํ ํด๋๊ณ ๊ตฌํ ์ฑ ์์ ๋ฒค๋์ฌ๋ค์๊ฒ ๋งก๊ธด ๊ฑฐ๋ผ๊ณ ๋ณผ ์ ์๋ค.
๊ทธ ๊ฒฐ๊ณผ ๋ฌด์ํ JVM ๋ฒค๋์ฌ๋ค์ด ๊ตฌํ์ ์์ํ์๊ณ ํ์ฌ๋ ๋ง์ JVM์ด ์ฌ์ฉ๋๊ณ ์๋ค.
ex) Oracle ์ ํซ์คํ , IBM์ Open J9 ๋ฑ๋ฑ ..
JVM ๋์๊ณผ์
์์ JVM์ด ๋๋ต ๋ฌด์์ธ์ง ์์๋ณด์์ผ๋ฉด ์ง๊ธ๋ถํฐ๋ ๊ตฌ์ฒด์ ์ธ ๋์๊ณผ์ ์ ์์๋ณผ ๊ฒ์ด๋ค.
JVM ๊ตฌ์กฐ
์ ์ฒด์ ์ธ ๋์ ๋ฐฉ์
JVM์ ์ข ๋ฅ์ ๋ฐ๋ผ ์์ธํ ๋ฐฉ์์ ์ด์ง ๋ค๋ฅผ ์ ์์ง๋ง, ์ ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
- ์๋ฐ ์ฝ๋๋ฅผ ๋ฐ์ดํธ ์ฝ๋๋ก ์ปดํ์ผํ๋ค.
- ์ปดํ์ผ ๋ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ํด๋์ค ๋ก๋์ ์ ๋ฌํ๋ค.
- ํด๋น ํด๋์ค๊ฐ ํ์ํ ๋ ํด๋์ค ๋ก๋๊ฐ ๋ฐํ์ ๋ฐ์ดํฐ ์์ญ์ ์ ๋ฌํ๋ค.
- ์คํ ์์ง์ด ํด๋น ํด๋์ค ๋ฉ์๋๋ฅผ ์คํ ์ํจ๋ค.
ํด๋์ค ๋ก๋
ํด๋์ค ๋ก๋์ ๊ตฌ์กฐ
- ๋ถํธ์คํธ๋ฉ ํด๋์ค ๋ก๋
- JVM์ ๊ตฌ๋์ํค๊ธฐ ์ํ ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ํ์ฌํ๊ณ ์๋ค.
- ๊ฐ์ฅ ์ด๊ธฐ์ ์คํ๋๋ฉฐ , ์ด์์ฒด์ ์ ๋ง๋ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ์ฐ์ฌ์๋ค.
- ์ต์คํ
์
ํด๋์ค ๋ก๋
- ์๋ฐ ํด๋์ค์ ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ํ์ฌํ๋ค.
- ์์คํ
ํด๋์ค ๋ก๋(Application ClassLoader)
- ๊ฐ๋ฐ์๋ค์ด ์์ฑํ ํด๋์ค ํ์ผ๋ค์ ํ์ฌํ๋ค.
- ์ด๊ฒ์ ์์ํ์ฌ ์ฌ์ฉ์ ์ ์ ํด๋์ค ๋ก๋๋ฅผ ๊ตฌํํ ์ ์๋ค.
์์ฒญ์ด ๋ค์ด์์ ๋ ๋ชจ๋ ํด๋์ค ๋ก๋์ ํด๋น ํด๋์ค๊ฐ ์์ ์ ,
ClassNotFoundException ์์ธ๋ฅผ ๋ฐํํ๋ค.
ํด๋์ค๋ฅผ ๋ก๋ํ๋ ๊ณผ์
ํด๋์ค ์ด๋ป๊ฒ ์ด๋ป๊ฒ ํด๋์ค๋ฅผ ๋ก๋ํ๋ ์ง ๊ฐ๋จํ๊ฒ ์์๋ณด์
- ๋ก๋
- ํด๋์ค๋ฅผ ํ์ผ์์ ๊ฐ์ ธ์์ JVM ๋ฉ๋ชจ๋ฆฌ์ ํ ๋นํ๋ค.
- ๋งํฌ
- ๊ฒ์ฆ(Verifying)
- ํด๋์ค ํ์ผ์ด ์ ํจํ์ง๋ฅผ ๊ฒ์ฆํ๋ค.
- ์๋ฐ ๋ช ์ธ , JVM ๋ช ์ธ๋ฅผ ์ ์ง์ผฐ๋ ์ง ํ์ธํ๋ฉฐ ๋ง์ฝ ํ ์คํธ๋ฅผ ํต๊ณผ ๋ชปํ์์ ์์ VerifyError๋ฅผ ๋ฐ์์ํจ๋ค.
- ์ค๋น(Preparing)
- ํด๋์ค ๋ฐ ์ธํฐํ์ด์ค์ ํ์ํ static field์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ ์ด๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ด๊ธฐํ ํ๋ค.
- ๋ถ์(Resolving):
- constant pool ๋ด์ ์๋ ๋ชจ๋ **์ฌ๋ณผ๋ฆญ ์ฐธ์กฐ ๊ฐ๋ค์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์(๋ค์ด๋ ํธ)**๋ก ๋ณํ์ํจ๋ค.
- ๊ฒ์ฆ(Verifying)
- ์ด๊ธฐํ
- ์ค๋น๊ณผ์ ์์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ด๊ธฐํ ์์ผ์คฌ๋ static filed๋ค์ ์ฝ๋์ ์์ฑํด์คฌ๋ ์ด๊ธฐ๊ฐ์ผ๋ก ๋ณ๊ฒฝํด์ค๋ค.
์ด ๊ณผ์ ๊น์ง ๋ง์ณค์ผ๋ฉด JVM์์ ํด๋์ค ํ์ผ์ ๊ตฌ๋์ํฌ ์ค๋น๊ฐ ๋๋๊ฒ ๋๋ค.
ํด๋์ค ๋ก๋์ ํน์ง
- ์์ ๋ชจ๋ธ
- ํด๋์ค ๋ก๋๋ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ฐํ์ผ๋ก ํด๋์ค ๋ก๋๋ผ๋ฆฌ ๋ก๋๋ฅผ ์์ํ๋ ๊ตฌ์กฐ๋ก ๋์ํ๋ค.
- ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์์ ํด๋์ค๋ก ์์ฒญ์ ์์ํด๊ฐ๋ฉด์ ํด๋น ํด๋์ค๋ฅผ ์ฐพ๋๋ฐ, ๋ชจ๋ ํด๋์ค ๋ก๋์ ์์ผ๋ฉด ํด๋์ค ํจ์ค์์ ์ฐพ์๋ณด๊ณ ๊ฑฐ๊ธฐ์๋ ์์ผ๋ฉด ์์ธ๋ฅผ ๋ฐํํ๋ค.
- ํด๋์ค ๋ก๋๋ผ๋ฆฌ ๋ถ๋ชจ-์์ ๊ด๊ณ๋ฅผ ์ด๋ฃจ์ด ๊ณ์ธต ๊ตฌ์กฐ๋ก ์์ฑ๋๋ฉฐ ์ต์์ ํด๋์ค ๋ก๋๋ ๋ถํธ์คํธ๋ฉ ํด๋์ค ๋ก๋์ด๋ค.
- ๊ฐ์์ฑ(visibility) ์ ํ
- ์๋ฅผ ๋ค์ด์ ์ดํ๋ฆฌ์ผ์ด์ ํด๋์ค ๋ก๋๋ ๋ถํธ์คํธ๋ฉ ๋ก๋์ ํด๋์ค๋ฅผ ๋ณผ ์ ์์ง๋ง , ๊ทธ ๋ฐ๋๋ ์๋๋ค. (๊ณ์ธต ๊ตฌ์กฐ)
- ํ์ ํด๋์ค ๋ก๋๋ ์์ ํด๋์ค ๋ก๋์ ํด๋์ค๋ฅผ ์ฐพ์ ์ ์์ง๋ง, ์์ ํด๋์ค ๋ก๋๋ ํ์ ํด๋์ค ๋ก๋์ ํด๋์ค๋ฅผ ์ฐพ์ ์ ์๋ค.
- ์ธ๋ก๋ ๋ถ๊ฐ
- ํด๋์ค ๋ก๋๋ ํด๋์ค๋ฅผ ๋ก๋ํ ์๋ ์์ง๋ง ์ธ๋ก๋ํ ์๋ ์๋ค. ์ธ๋ก๋ ๋์ , ํ์ฌ ํด๋์ค ๋ก๋๋ฅผ ์ญ์ ํ๊ณ ์์ ์๋ก์ด ํด๋์ค ๋ก๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
- ์ ์ผ์ฑ
- ํ์ ํด๋์ค ๋ก๋๋ ์์ ํด๋์ค ๋ก๋๊ฐ ๋ก๋ฉํ ํด๋์ค๋ฅผ ๋ค์ ๋ก๋ฉํ์ง ์์์ผ๋ก์จ ํจ์จ์ ์ผ๋ก ๋ก๋ฉ์ด ๊ฐ๋ฅํ๋ค
๋ฐํ์ ๋ฐ์ดํฐ ์์ญ
๋ฐํ์ ๋ฐ์ดํฐ ์์ญ์ JVM์ด OS ํ ๋น ๋ฐ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค.
ํฌ๊ฒ 6๊ฐ์ง์ ์์ญ์ด ์๋๋ฐ , ๊ณตํต์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅ ํ๊ฒ๊ณผ ๊ณต์ ํ์ง ์๋ ๊ฒ์ ๊ตฌ๋ถ ์ง์ด ์์๋ณด์
๊ณต์ ํ์ง ์๋ ๊ฒ
์ฐ๋ ๋ ๋ด์ ์๋ ๊ฒ๋ค์ ์๋ก ์ ๊ทผ ํ ์ ์๋ค.
- JVM ์คํ
- ๋ฉ์๋๊ฐ ํ๋์ฉ ์ํ๋ ๋๋ง๋ค ์คํ ํ๋ ์์ด ํ๋์ฉ ์์ด๊ฒ ๋๋ค.
- ์คํ ํ๋ ์์๋ ์ง์ญ ๋ณ์ ๋ฐฐ์ด์ด๋ ํผ์ฐ์ฐ์ ์คํ ๋ฑ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
int num = 1; // ์คํ ํ๋ ์์ ์์
int sum = num + 5; // ์คํ ํ๋ ์์ ์์
์ด๋ฐ ๊ฐ๋จํ ์ฝ๋๋ฅผ ์ํํ ๋ JVM ์คํ ๋ด์์๋ ์ด๋ค ์ผ์ด ์ผ์ด๋ ๊น?
์ผ๋จ ์์์ ๋งํ ๋๋ก ์คํ ํ๋ ์์ ๋ฉ์๋๊ฐ ์์ด๊ฒ ๋ ๊ฒ ์ด๋ค.
๊ทธ ๋ค์ ์ง์ญ ๋ณ์ ๋ฐฐ์ด์ ํ๋ผ๋ฏธํฐ , ๋ณ์๋ค์ด ์ ์ฅ์ด ๋๋ ๋ฐ ๋ค์๊ณผ ๊ฐ์ด ์ ์ฅ๋๋ค.
๋ค์ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๋ณด์
L0
LINENUMBER 15 L0
ICONST_1 // ์คํ์ ์ ์๊ฐ 1์ ์ฌ๋ฆฐ๋ค.
ISTORE 1 // ์คํ์ ์๋ ์ ์๊ฐ์ ๊บผ๋ด์ 1๋ฒ ์ธ๋ฑ์ค์ ์ ์ฅ
L1
LINENUMBER 16 L1
ILOAD 1 // 1๋ฒ ์ธ๋ฑ์ค์ ๊ฐ์ ์คํ์ ์ฌ๋ ค๋ผ
ICONST_5 // ์คํ์ ์ ์๊ฐ 5๋ฅผ ์ฌ๋ฆฐ๋ค.
IADD // ์คํ ์๋จ ๋ ๊ฐ์ ๊ฐ์ ๋ํ๋ค.
ISTORE 2 // 2๋ฒ ์ธ๋ฑ์ค์ ์ ์ฅํ๋ค.
์ด๋ ๊ฒ ํด์ ๊ฐ์ ๋ฐํํ๊ณ ์ฐ์ฐ์ ๋ง์น๊ฒ ๋๋ค.
2.PC ๋ ์ง์คํฐ
- ํ์ฌ JVM ๋ช ๋ น์ ์ฃผ์๋ฅผ ๊ฐ์ง๋ ์ฐ๋ ๋ ๊ณต์ ์ ๋ ์ง์คํฐ์ด๋ค.
- ์ฐ๋ ๋๊ฐ ์์๋ ๋ ์์ฑ๋๋ค.
3.๋ค์ดํฐ๋ธ ๋ฉ์๋ ์คํ
- JNI ๋ผ๋ ๊ฒ์ ํตํด ์๋ฐ๊ฐ ์๋ c๋ c++์ ํตํด ํด๋์ค๋ฅผ ์์ฑํ์์ ์ ์ด๋ฅผ ์ํํ๊ธฐ ์ํ ์คํ์ด๋ค.
๊ณต์ ํ๋ ๊ฒ
- ํ
- ์ธ์คํด์ค ํน์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๋ฆฌํ๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์์ ์ด ์ฃผ๋ก ์ด๋ฃจ์ด์ง๋ค.
- ๋ฉ์๋ ์์ญ
- ํด๋์ค ๋ก๋๋ก ๋ถํฐ ๋ถ๋ฌ์จ ํด๋์ค์ ๋ฐ์ดํธ ์ฝ๋ ์ ๋ณด๋ค์ ์ ์ฅํ๋ค.
์คํ ์์ง
์คํ ์์ง์์ ๋น๋ก์ ๊ธฐ๊ณ์ด๋ก์ ๋ฒ์ญ์ ์์ํ๋ค.
์ด๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์ฐ์ด๋ ๋ฐ ์ธํฐํ๋ฆฌํฐ์ JIT ๋ฐฉ์์ด๋ค.
์ธํฐํ๋ฆฌํฐ
- ๋ฐ์ดํธ ์ฝ๋ ๋ช ๋ น์ด๋ฅผ ํ๋์ฉ ์ฝ์ด์ ์ํํ๋ค.
- ํด์์ ๋น ๋ฅด์ง๋ง ์คํ์ ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์๋ค.
- ๋ฐ์ดํธ ์ฝ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธํฐํ๋ฆฌํฐ๋ก ๋์ํ๋ค.
JIT(Just-In-Time)
- ๋ฐ์ดํธ ์ฝ๋ ์ ์ฒด๋ฅผ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ๋ฒ์ญํ๋ค.
- ์ดํ ์ธํฐํ๋ฆฌํ ์ ํ์ง ์๊ณ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ์ง์ ์คํํ๋ฉฐ ํ๋ฒ ์ปดํ์ผ ๋ ์ฝ๋๋ ์บ์์ ์ ์ฅ๋๋ค.
- ํ์ง๋ง ์ฒ์ ์ปดํ์ผ ๊ณผ์ ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ฏ๋ก ํ๋ฒ๋ง ์ฐ๋ ๋ฉ์๋๋ JIT ์ฌ์ฉ์ด ์ ํฉํ์ง ์๋ค.
์ฐธ๊ณ ์๋ฃ
JVM์ ๊ดํ์ฌ - Part 2, ClassLoader
JVM. ํด๋์ค๋ก๋ ์๋ธ์์คํ (Class Loader Subsystem)
https://www.youtube.com/watch?v=6reapO0gLPs&t=399s
'ํ๋ก๊ทธ๋๋จธ์ค ๋ฐฑ์๋ ๋ฐ๋ธ์ฝ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Gradle ์ด๋? (0) | 2023.09.03 |
---|---|
equals & hash code ์ ์ด๋ฅผ ๊ฐ์ด ์ฌ์ ์ ํ๋ ์ด์ (0) | 2023.07.29 |