ch19 : JVM
Last updated
Last updated
λͺ©μ°¨
GC
JVM (Java Virtual Machine)
μλ° νλ‘κ·Έλ¨μ΄ μνλλ νλ‘κ·Έλ¨μ΄λ€. μ΄ν리μΌμ΄μ μ JVM μμμ λμνλ€.
JRE (Java Runtime Environment) :
(μ΄ν리μΌμ΄μ μΌλ° μ¬μ©μλ€μ μν) μ€νμ μν νκ²½
μλ° ν΄λμ€ λΌμ΄λΈλ¬λ¦¬(Java class libraries) + μλ° κ°μ λ¨Έμ (JVM)
JDK (Java Develope Kit)
κ°λ°μλ₯Ό μν νκ²½
JREμ μΆκ°λ‘ μλ° νλ‘κ·Έλ¨μ κ°λ°νλ λ° νμν μ»΄νμΌλ¬, λλ²κ±°μ κ°μ λͺ λ Ήμ΄ν κ°λ° λꡬλ ν¬ν¨λλ€.
μλ°λ OSμ λ 립μ μ΄λ€
μ΄λ€ OSλ‘ μ κ·Όν΄λ JAVAλ₯Ό μ¬μ©νλ €λ©΄ JVMλ₯Ό ν΅ν΄μ λμνκΈ° λλ¬Έμ (μ¦, OSμμ JRE/JDKλ₯Ό λ€μ΄ λ°μμ λμμν΄) OSμ λ 립μ μ΄κ² μ½λ©ν μ μλ€. (Write Once Run Anywhere)
c/c++λ± μλ° μ΄μ μ νλ‘κ·Έλλ° μΈμ΄λ€μ μ»΄νμΌλ¬λ κΈ°κ³μ΄ μ½λλ‘ λ³νν λ νλ‘κ·Έλ¨μ΄ μ€νλ λμ μ»΄ν¨ν°μ cpuμ μ΄μ체μ μ μ’ μμ μΈ μ½λλ‘ λ³ννλ κ³Όμ μ κ±°μΉλ€.
Interpreter (μΈν°ν리νΈ) λ°©μ : μμ€μ½λλ₯Ό μ»΄νμΌμμ λ³ννμ§ μκ³ , νλ‘κ·Έλ¨μ μ€νν λ(λ°νμ μ)λ§λ€ λ³ν β κ°νΈνλ μλκ° λλ¦Ό Static Complie (μ μ μ»΄νμΌ) λ°©μ : μ€ν μ μ μ λΆ κΈ°κ³μ΄λ‘ λ³ννλ€.
μλ°μμ μ¬μ©νλ λ°μ΄νΈμ½λλ₯Ό κΈ°κ³μ΄λ‘ λ³ννλ λ°©μμΌλ‘, μΈν°ν리νΈμ μ μ μ»΄νμΌ λ°©μμ νΌν©ν λ°©μμ΄λ€.
μΈν°ν리ν°μ μν΄ μλ‘μ΄ μ½λλ₯Ό κΈ°κ³μ΄λ‘ λ³ννλ μμ μ κ³μνκ³ + νλ² λ³νλ μ½λλ μΊμμ μ μ₯νμλ€κ° νμμ μ¬μ¬μ©νλ€.
λ°λΌμ λ°λ³΅μ μΌλ‘ μνλλ μ½λλ λΉ λ₯΄κ² μνλκ³ , μ²μ μμνλ μ½λλ λ³νν΄μΌνλ―λ‘ μλκ° λ리λ€.
λμ λ³νμ΄λΌκ³ λ νλ©°, Javaμ C#μμ μ¬μ©νλ€.
μλ° μμ€(.java)λ₯Ό μλ° μ»΄νμΌλ¬λ₯Ό ν΅ν΄ μλ° λ°μ΄νΈ μ½λ(.class)λ‘ μ»΄νμΌνλ€.
μλ°λ ν΄λμ€ νμΌμ λμ μΌλ‘ μ½μ΄μ¨λ€. μ¦, JVMμ΄ λμνλ€κ° ν΄λμ€ νμΌμ μ°Έμ‘°νλ μκ° λμ μΌλ‘ μ½μ΄μ λ©λͺ¨λ¦¬μ λ‘λνλ€.
μ€ν μμ§(Execution Engine)μ JVM λ©λͺ¨λ¦¬(Runtime Data Area)μ μ¬λΌμ¨ λ°μ΄νΈ μ½λλ€μ λͺ λ Ήμ΄ λ¨μλ‘ νλμ© κ°μ Έμμ μ€νν©λλ€.
μ κ³Όμ μμ JVMμ Execution Engineμ΄ λ°μ΄νΈμ½λλ₯Ό κΈ°κ³μ΄λ‘ λ³ννλ λ°©μμ΄ JIT μ»΄νμΌλ¬ λ°©μμ΄λ€.
Hotspot JVMμ μ±λ₯μ΄ μ νκ° λ λ§ν λΆλΆ(HotSpot)μ μ°Ύκ³ , ν΄λΉ λΆλΆμμ JIT μ»΄νμΌλ¬ λ°©μμ μ¬μ©νλ€.
μ΄λ κΈ°κ³μ΄λ‘ λ³ννλ λ°©λ²μ Clientμ Server λ κ°μ§κ° μλ€.
HotSpot ν΄λΌμ΄μΈνΈ μ»΄νμΌλ¬
CPU μ½μ΄κ° νλλΏμΈ μ¬μ©μλ₯Ό μν΄ λ§λ€μ΄μ‘λ€.
μ ν리μΌμ΄μ μμ μκ°μ λΉ λ₯΄κ²νκ³ , μ μ λ©λͺ¨λ¦¬λ₯Ό μ μ νλλ‘ νλ€.
HotSpot μλ² μ»΄νμΌλ¬
μ½μ΄κ° λ§μ μ₯λΉμμ μ ν리μΌμ΄μ μ λ리기 μν΄ μ¬μ©νλ€.
μ ν리μΌμ΄μ μν μλμ μ΄μ μ΄ λ§μΆ°μ Έ μλ€.