JVMμ λν΄ λ°°μ°κΈ° μ JAVAμ νΉμ§ μκ³ κ°κΈ°
- JAVAμ νΉμ§
- κ°μ²΄μ§ν₯μ νλ‘κ·Έλλ° μΈμ΄
- νλ«νΌ λ
립μ±, λ©ν°μ°λ λ, μλ λ©λͺ¨λ¦¬ κ΄λ¦¬ λ± λ€μν νΉμ§ κ°μ§κ³ μμ
- JAVAμ μ₯μ
- JVM μμμ λμνκΈ° λλ¬Έμ μ΄μ체μ μ λ
립μ
- GabageCollectorλ₯Ό ν΅ν μλμ μΈ λ©λͺ¨λ¦¬ κ΄λ¦¬κ° κ°λ₯
- JAVAμ λ¨μ
- JVM μμμ λμνκΈ° λλ¬Έμ μ€ν μλκ° μλμ μΌλ‘ λλ¦Ό
- λ€μ€ μμμ΄λ νμ
μ μ격νλ©°, μ μ½μ΄ λ§μ
π JVM
νΉμ§
- JAVA Virtual Machine(μλ° κ°μ λ¨Έμ )μ μ½μ
- κ°μλ¨Έμ : κ°μ λ¨Έμ (Virtual Machine, VM)μ 물리μ νλμ¨μ΄ μμ€ν
μ ꡬμΆλμ΄ μ체 CPU, λ©λͺ¨λ¦¬, λ€νΈμν¬ μΈν°νμ΄μ€ λ° μ€ν 리μ§λ₯Ό κ°μΆκ³ μλνλ κ°μ μ»΄ν¨ν° μμ€ν
- Java Byte Codeλ₯Ό CPUλ OSμ μ’
λ₯μ λ§κ² ν΄μν΄μ£Όλ μν
- κ°λΉμ§ 컬λ μ
μ ν΅ν΄ μλμ μΈ λ©λͺ¨λ¦¬ κ΄λ¦¬ κ°λ₯
- μ€ν κΈ°λ°μΌλ‘ λμ
π¬ JVM λ΄λΆ ꡬ쑰

1. ν΄λμ€ λ‘λ (Class Loader)
- μλ°λ λμ μΌλ‘ ν΄λμ€λ₯Ό μ½μ΄μ€λ―λ‘, νλ‘κ·Έλ¨μ΄ μ€ν μ€μΈ λ°νμμμμΌ λͺ¨λ μ½λκ° μλ° κ°μ λ¨Έμ κ³Ό μ°κ²°
- λμ μΌλ‘ ν΄λμ€λ₯Ό λ‘λ©ν΄μ£Όλ μν μ νλ κ²μ΄ λ°λ‘ ν΄λμ€ λ‘λ(class loader)
- ν΄λμ€ λ‘λλ .class νμΌμ λ¬Άμ΄μ JVMμ΄ μ΄μ체μ λ‘λΆν° ν λΉλ°μ λ©λͺ¨λ¦¬ μμμΈ Runtime Data Areaλ‘ μ μ¬
2. μ€ν μμ§ (Execution Engine)
- JVMμΌλ‘ λ‘λλ .class νμΌ(λ°μ΄νΈμ½λ)λ€μ Runtime Data Areasμ Method Areaμ λ°°μΉ
- λ°°μΉλ μ΄ν JVMμ Method Areaμ λ°μ΄νΈ μ½λλ₯Ό μ€ν μμ§(Execution Engine)μ μ 곡νμ¬, μ μλ λ΄μ©λλ‘ λ°μ΄νΈ μ½λλ₯Ό μ€ν
- μ΄λ, λ‘λλ λ°μ΄νΈμ½λλ₯Ό μ€ννλ λ°νμ λͺ¨λμ΄ μ€ν μμ§(Execution Engine)
- μ€ν μμ§μ λ°μ΄νΈμ½λλ₯Ό λͺ
λ Ήμ΄ λ¨μλ‘ μ½μ΄μ μ€ν
3. κ°λΉμ§ 컬λ ν° (Garbage Collector)
- μλ° κ°μ λ¨Έμ μ κ°λΉμ§ 컬λ ν°(garbage collector)λ₯Ό μ΄μ©νμ¬ μ¬μ©νμ§ μλ λ©λͺ¨λ¦¬λ₯Ό μλμΌλ‘ νμ
- Heap λ©λͺ¨λ¦¬ μμμ μμ±(μ μ¬)λ κ°μ²΄λ€ μ€μ μ°Έμ‘°λμ§ μμ κ°μ²΄λ€μ νμ ν μ κ±°νλ μν
- GCμν μ μννλ μ€λ λλ₯Ό μ μΈν λλ¨Έμ§ λͺ¨λ μ€λ λλ€μ μΌμμ μ§μν
4. λ°νμ λ°μ΄ν° μμ (Runtime Data Area)
π JVM λ©λͺ¨λ¦¬ μμ μ€λͺ
λ§ν¬
π¬ μλ° νλ‘κ·Έλ¨ μ€ν κ³Όμ

1. κ°λ°μκ° μλ° μμ€μ½λ(.java)
λ₯Ό μμ±
2. μ»΄νμΌλ¬
μ μν΄ μμ€νμΌλ₯Ό .class νμΌ(λ°μ΄νΈ μ½λ) μμ±
μλ° λ°μ΄νΈ μ½λ
- JVMμ΄ μ΄ν΄ κ°λ₯ν μΈμ΄λ‘ λ³νλ μλ° μμ€ μ½λ
- .class νμΌμ
Class Loader
μ μν΄ JVMλ΄
λ‘ λ‘λ
μ€νμμ§
μ μ΄μ©ν΄ λ°μ΄νΈ μ½λ
λ₯Ό λ°μ΄λ리 μ½λ
λ‘ λ³ν
λ°νμ λ°μ΄ν° μμ
μ μν΄ JVM λ©λͺ¨λ¦¬μ μ¬λΌκ°
μ€νμμ§
μ JVM λ©λͺ¨λ¦¬μ μ¬λΌμ¨ λ°μ΄νΈ μ½λλ₯Ό νλμ© κ°μ Έμ μ€νν΄μ κΈ°κ³μ΄λ‘ λ³ν
(Java μ»΄νμΌλ¬ μ¬μ©)
π GC
νΉμ§
Garbage Collection
μ μ½μ
μ¬μ©νμ§ μλ κ°μ²΄
λ λ©λͺ¨λ¦¬μμ μμ
νλ μμ
- μλ° μΈμ΄μ ν° μ₯μ
JVMμμ μ€ν
- JVMμ λ©λͺ¨λ¦¬ μ€
ν λ©λͺ¨λ¦¬λ§
λ€λ£Έ
GCμ λμ
- κ°μ²΄κ° NULLμΈ κ²½μ° (ex. String str = null)
- λΈλ μ€ν μ’
λ£ ν, λΈλ μμμ μμ±λ κ°μ²΄
- λΆλͺ¨ κ°μ²΄κ° NULLμΈ κ²½μ°, ν¬ν¨νλ μμ κ°μ²΄
π¬ GCμ λ©λͺ¨λ¦¬ ν΄μ κ³Όμ
- GCμ μμ
μ μννκΈ° μν΄ JVMμ΄ μ΄ν리μΌμ΄μ
μ μ€νμ μ μ λ©μΆ€
- GCλ₯Ό μ€ννλ μ°λ λλ₯Ό μ μΈν λͺ¨λ μ°λ λλ€μ μμ
μ μ€λ¨(Stop The World κ³Όμ )Β
- μ¬μ©νμ§ μλ λ©λͺ¨λ¦¬λ₯Ό μ κ±°(Mark and Sweep κ³Όμ )νκ³ μμ
μ΄ μ¬κ°