Java Virtual Machine
Last updated
Was this helpful?
Last updated
Was this helpful?
μλ° μ ν리μΌμ΄μ μ΄ μνλλ λ°νμ μμ§
Java μ ν리μΌμ΄μ μ΄ μ€νλλ νκ²½μ λ€μκ³Ό κ°μ κ³μΈ΅ ꡬ쑰λ₯Ό κ°μ§λ€.
JVM(Windows/Mac/Linux)
OS(Windows/Mac/Linux)
Computer(Hardware)
μλ°μ ν° νΉμ§ μ€ νλλ κ°μ νκ²½μΈ JVMμ μ‘΄μ¬μΈλ°, Computer -> OS -> JVM -> Java Application λ μ΄μ΄ ννλ‘ JVM μμμ μ€νλλ€. μ΄λ¬ν νΉμ§μΌλ‘ μΈν΄ λ€μκ³Ό κ°μ νΉμ§μ κ°μ§κ² λλ€.
νλ«νΌ λ 립μ±: JVM μμμ μ€νλκΈ° λλ¬Έμ μ΄λ νλ«νΌμ΄λ μ»΄νμΌ λ μ½λκ° μ€νλ μ μμ
JVM νμ 쑰건: μ€νμ μν΄μλ λ°λμ JVMμ΄ νμν¨
μ±λ₯ μ΄μ: JVM κ±°μΉκΈ° λλ¬Έμ μλκ° λ릴 μ μμ(μ΅κ·Όμ μ»΄νμΌλ¬μ μ΅μ ν κΈ°μ λ‘ κ·Έ μλμ 격차λ₯Ό λ§μ΄ μ€μ)
Java Compiler: Java Source Codeλ₯Ό Java Byte Codeλ‘ λ³ν
Class Loader: λ°μ΄νΈ μ½λ λ‘λ© / κ²μ¦ / λ§νΉ λ± μν
Runtime Data Area: μ± μ€νμ μν΄ μ¬μ©λλ JVM λ©λͺ¨λ¦¬ μμ
Execution Engine: λ©λͺ¨λ¦¬ μμμ μλ λ°μ΄ν°λ₯Ό κ°μ Έμ ν΄λΉνλ μμ μν
μμ±λ Java Sourceλ₯Ό Java Compilerλ₯Ό ν΅ν΄ Java Byte Codeλ‘ λ³ν
μ»΄νμΌ λ Byte Codeλ₯Ό JVMμ Class Loaderμ μ λ¬
Class Loaderλ Dynamic Loadingμ ν΅ν΄ νμν ν΄λμ€λ€μ λ‘λ© λ° λ§ν¬νμ¬ Runtime Data Area(JVM Memory)λ‘ μ λ¬
Execution Engineμ΄ μ¬λΌμ¨ Byte Codeλ€μ λͺ λ Ήμ΄ λ¨μλ‘ νλμ© κ°μ Έμμ μ€ν
ν΄λμ€ λ‘λλ μ»΄νμΌλ μλ° ν΄λμ€ νμΌ(*.class)μ λ©λͺ¨λ¦¬λ‘ λ‘λνκ³ , Runtime Data Areaμ λ°°μΉνλ μν μ νλ€. class νμΌμ λ‘λ©νλ μμλ λ€μκ³Ό κ°λ€.
Loading: ν΄λμ€ λ‘λκ° ν΄λμ€ νμΌμ μ½μ΄λ€μ¬ JVM λ©λͺ¨λ¦¬μ λ‘λ
Linking: ν΄λμ€ νμΌμ μ¬μ©νκΈ° μν΄ κ²μ¦
Initialization: ν΄λμ€ λ³μ μ΄κΈ°ν
ν΄λμ€λ₯Ό λ©λͺ¨λ¦¬μ μ¬λ¦¬λ Loading λ¨κ³μμλ ν΄λμ€λ₯Ό λ‘λνλ κ·μΉμ λ°λΌ ν΄λμ€ λ‘λκ° ν΄λμ€ νμΌμ μ½μ΄λ€μΈλ€.
λͺ¨λ ν΄λμ€λ₯Ό ν λ²μ λ‘λνλ κ²μ΄ μλλΌ νμν ν΄λμ€λ§ λμ μΌλ‘ λ©λͺ¨λ¦¬μ λ‘λ
static λ©€λ²λ€ λν μ λΆ λ©λͺ¨λ¦¬μ μ¬λΌκ°λ κ²μ΄ μλλΌ, ν΄λμ€ λ΄μ static λ©€λ²λ₯Ό νΈμΆνκ² λλ©΄ ν΄λμ€κ° λμ μΌλ‘ λ©λͺ¨λ¦¬μ λ‘λ
JVM(Java Virtual Machine): μλ° λ°μ΄νΈ μ½λλ₯Ό μ€νμν€κΈ° μν κ°μ λ¨Έμ
JRE(Java Runtime Environment): μλ° μ ν리μΌμ΄μ μ μ€ννκΈ° μν λꡬ(νμν λΌμ΄λΈλ¬λ¦¬ λ° νμ νμΌ)κ° ν¬ν¨λ μ€ν νκ²½
JDK(Java Development Kit): μλ°λ‘ κ°λ°νκΈ° μν νμ μμ(javac λ±)λ₯Ό ν¬ν¨ν κ°λ° ν€νΈ
JVM λ©λͺ¨λ¦¬λ ν¬κ² 5κ°μ§ μμμΌλ‘ λλλ©°, κ°κ°μ μμμ λ€μκ³Ό κ°μ μν μ μννλ€.
Method
ν΄λμ€ μ 보, ν΄λμ€(static) λ³μ, μμ, λ©μλ μ½λ
JVM μμ ~ μ’ λ£
O
Heap
κ°μ²΄ μΈμ€ν΄μ€, μΈμ€ν΄μ€ λ³μ
Gabage Collection
μ μν΄ κ΄λ¦¬
O
Stack
μ€λ λ λ³λ‘ λ°νμμ νΈμΆ λ λ©μλ, μ§μ λ³μ, λ§€κ° λ³μ, λ¦¬ν΄ κ°
λ©μλ μ’ λ£ μ
X
μ΄μΈμλ μ€λ λμ λͺ
λ Ήμ΄ μ£Όμκ° μ μ₯λλ PC Register
μλ° μΈμ μΈμ΄λ‘ μμ±λ λ€μ΄ν°λΈ μ½λκ° μ μ₯λλ Native Method Stack
μ΄ μ‘΄μ¬νλ€.
μ°Έκ³ μλ£