Frame
λͺ¨λ λ©μλ νΈμΆμ λν΄ μ frameμ΄ μμ±λκ³ stack 맨 μμ μΆκ°(νΈμ)λ©λλ€. λ©μλκ° μ μμ μΌλ‘ λ°νλκ±°λ λ©μλ νΈμΆ μ€μ ν¬μ°©λμ§ μμ μμΈκ° λ°μνλ©΄ frameμ΄ μ κ±°(ν)λ©λλ€. μμΈ μ²λ¦¬μ λν μμΈν λ΄μ©μ μλ μμΈ ν μ΄λΈ μΉμ μ μ°Έμ‘°νμΈμ.
Each frame contains:
Local variable array - μ§μ λ³μ λ°°μ΄
Return value - λ°ν κ°
Operand stack - νΌμ°μ°μ μ€ν
νμ¬ λ©μλμ ν΄λμ€μ λν λ°νμ μμ νμ λν μ°Έμ‘°
Local Vairable Array
λ‘컬 λ³μμ λ°°μ΄μλ this
μ λν μ°Έμ‘°, λͺ¨λ λ©μλ λ§€κ° λ³μ λ° κΈ°ν λ‘μ»¬λ‘ μ μλ λ³μλ₯Ό ν¬ν¨νμ¬ λ©μλ μ€ν μ€μ μ¬μ©λλ λͺ¨λ λ³μκ° ν¬ν¨λ©λλ€. ν΄λμ€ λ©μλ(μ¦, μ μ λ©μλ)μ κ²½μ° λ©μλ λ§€κ°λ³μλ 0λΆν° μμνμ§λ§ μΈμ€ν΄μ€ λ©μλμ κ²½μ° this
μν΄ 0 μ¬λ‘―μ΄ μμ½λμ΄ μμ΅λλ€.
μ§μ λ³μλ λ€μκ³Ό κ°μ μ μμ΅λλ€
boolean
byte
char
long
short
int
float
double
reference
returnAddress
long
λ° double
μ μ μΈνκ³ λͺ¨λ μ νμ μ§μ λ³μ λ°°μ΄μμ λ¨μΌ μ¬λ‘―μ μ¬μ©ν©λλ€. long
λ° double
μ λ λ°° λλΉ(32λΉνΈ λμ 64λΉνΈ)μ΄κΈ° λλ¬Έμ λ λ€ λ κ°μ μ°μ μ¬λ‘―μ μ¬μ©ν©λλ€.
Operand Stack
νΌμ°μ°μ stackμ λ²μ© λ μ§μ€ν°κ° native CPUμμ μ¬μ©λλ κ²κ³Ό μ μ¬ν λ°©μμΌλ‘ λ°μ΄νΈ μ½λ λͺ λ Ήμ΄ μ€ν μ€μ μ¬μ©λ©λλ€. λλΆλΆμ JVM λ°μ΄νΈ μ½λλ κ°μ μμ±νκ±°λ μλΉνλ μμ μ νΈμ, νν, 볡μ , κ΅ν λλ μ€ννμ¬ νΌμ°μ°μ stackμ μ‘°μνλ λ° μκ°μ 보λ λλ€. λ°λΌμ λ‘컬 λ³μ λ°°μ΄κ³Ό νΌμ°μ°μ μ€ν κ°μ κ°μ μ΄λνλ λͺ λ Ήμ λ°μ΄νΈ μ½λμμ λ§€μ° μμ£Ό μ¬μ©λ©λλ€. μλ₯Ό λ€μ΄ κ°λ¨ν λ³μ μ΄κΈ°νλ‘ μΈν΄ νΌμ°μ°μ μ€νκ³Ό μνΈ μμ©νλ λ κ°μ λ°μ΄νΈ μ½λκ° μμ±λ©λλ€.
λ€μ λ°μ΄νΈ μ½λλ‘ μ»΄νμΌλ©λλ€.
λ‘컬 λ³μ λ°°μ΄, νΌμ°μ°μ μ€ν λ° λ°νμ μμ ν κ°μ μνΈ μμ©μ λν μμΈν μ€λͺ μ μλ ν΄λμ€ νμΌ κ΅¬μ‘° μΉμ μ μ°Έμ‘°ν©λλ€.
Dynamic Linking
κ° νλ μμλ λ°νμ μμ νμ λν μ°Έμ‘°κ° ν¬ν¨λ©λλ€. μ°Έμ‘°λ ν΄λΉ frameμ λν΄ μ€ν μ€μΈ λ©μλμ ν΄λμ€μ λν μμ νμ κ°λ¦¬ν΅λλ€. μ΄ μ°Έμ‘°λ λμ μ°κ²°μ μ§μνλ λ° λμμ΄ λ©λλ€.
C/C++ μ½λλ μΌλ°μ μΌλ‘ κ°μ²΄ νμΌλ‘ μ»΄νμΌλ λ€μ μ¬λ¬ κ°μ²΄ νμΌμ΄ ν¨κ» μ°κ²°λμ΄ μ€ν νμΌμ΄λ dllκ³Ό κ°μ μ¬μ© κ°λ₯ν μν°ν©νΈλ₯Ό μμ±ν©λλ€. μ°κ²° λ¨κ³ λμ κ° κ°μ²΄ νμΌμ symbolic μ°Έμ‘°λ μ΅μ’ μ€ν νμΌμ μλμ μΈ μ€μ λ©λͺ¨λ¦¬ μ£Όμλ‘ λ체λ©λλ€. Javaμμ μ΄ μ°κ²° λ¨κ³λ λ°νμμ λμ μΌλ‘ μνλ©λλ€.
Java ν΄λμ€κ° μ»΄νμΌλλ©΄ λ³μ λ° λ©μλμ λν λͺ¨λ μ°Έμ‘°κ° symbolic μ°Έμ‘°λ‘ ν΄λμ€μ μμ νμ μ μ₯λ©λλ€. symbolic μ°Έμ‘°λ μ€μ λ©λͺ¨λ¦¬ μμΉλ₯Ό μ€μ λ‘ κ°λ¦¬ν€λ μ°Έμ‘°κ° μλ λ Όλ¦¬μ μ°Έμ‘°μ λλ€. JVM ꡬνμ symbolic μ°Έμ‘°λ₯Ό νμΈν μκΈ°λ₯Ό μ νν μ μμ΅λλ€. μ΄κ²μ λ‘λλ ν ν΄λμ€ νμΌμ΄ νμΈλ λ λ°μν μ μμΌλ©° eager λλ static resolutionμ΄λΌκ³ ν©λλ€. λμ symbolic μ°Έμ‘°κ° μ²μμΌλ‘ μ¬μ©λλ κ²½μ° lazy or late resolutionμ΄λΌκ³ ν©λλ€. κ·Έλ¬λ JVMμ κ° μ°Έμ‘°κ° μ²μ μ¬μ©λ λ resolutionμ΄ λ°μν κ²μ²λΌ λμν΄μΌ νλ©° μ΄ μμ μμ resolution μ€λ₯λ₯Ό λ°μμμΌμΌ ν©λλ€. λ°μΈλ©μ symbolic μ°Έμ‘°λ‘ μλ³λλ νλ, λ©μλ λλ ν΄λμ€κ° μ§μ μ°Έμ‘°λ‘ λ체λλ νλ‘μΈμ€μ΄λ©° symbolic μ°Έμ‘°κ° μμ ν λ체λκΈ° λλ¬Έμ ν λ²λ§ λ°μν©λλ€. symbolic μ°Έμ‘°κ° μμ§ ν΄κ²°λμ§ μμ ν΄λμ€λ₯Ό μ°Έμ‘°νλ κ²½μ° μ΄ ν΄λμ€κ° λ‘λλ©λλ€. κ° μ§μ μ°Έμ‘°λ λ³μ λλ λ©μλμ λ°νμ μμΉμ κ΄λ ¨λ μ μ₯ ꡬ쑰μ λν μ€νμ μΌλ‘ μ μ₯λ©λλ€.
Last updated
Was this helpful?