JAVAλž€? μžλ°”μ˜ ꡬ동 원리 (JVM의 νŠΉμ§•)
2025. 1. 19. 01:43

μžλ°”λŠ” 객체 μ§€ν–₯적 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ !!

 

μžλ°” ν”„λ‘œκ·Έλž¨μ˜ ꡬ동원리

 

1. μ†ŒμŠ€μ½”λ“œλ₯Ό μž‘μ„±ν•œλ‹€ (.java ν™•μž₯자의 μ†ŒμŠ€νŒŒμΌ)

2. 컴파일러(java.exe)κ°€ λ°”μ΄νŠΈμ½”λ“œλ‘œ λ³€ν™˜ν•œλ‹€. (.class ν™•μž₯자의 클래슀 파일)

3. 런처(java.exe)둜 μžλ°” 가상머신(JVM)을 κ΅¬λ™μ‹œν‚¨λ‹€.

4. μžλ°” 가상머신(JVM)이 λ°”μ΄νŠΈμ½”λ“œλ₯Ό ν•΄μ„ν•˜λ©° μžλ°” ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λœλ‹€.

( * bytecodeλŠ” μžλ°” 가상 머신이 읽을 수 μžˆλŠ” μ–Έμ–΄λ‘œ λ³€ν™˜λœ μ½”λ“œ. JVM만 μ„€μΉ˜ λ˜μ–΄ 있으면 bytecodeλŠ” μ–΄λ–€ μš΄μ˜μ²΄μ œμ—μ„œλΌλ„ 싀행될 수 μžˆλ‹€. )

 

 

 

μžλ°” 가상 λ¨Έμ‹ (JVM) 

 

* ꡬ성 μš”μ†Œ 

1. 클래슀 λ‘œλ”(Class Loader)

 : ν•„μš”ν•œ 클래슀 νŒŒμΌμ„ μ°Ύκ³  λ™μ μœΌλ‘œ λ‘œλ“œν•˜μ—¬ μ‹€ν–‰ μ‹œμ— 클래슀λ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•œλ‹€. λ‘œλ“œλœ ν΄λž˜μŠ€λŠ” JVM의 λ©”λͺ¨λ¦¬ μ˜μ—­μ— μ €μž₯λœλ‹€.

2. μ‹€ν–‰ μ—”μ§„(Execution Engine)

 : λ°”μ΄νŠΈ μ½”λ“œλ₯Ό κΈ°κ³„μ–΄λ‘œ λ³€ν™˜ν•˜κ³ , 이λ₯Ό μ‹€ν–‰ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•œλ‹€.

3. λ©”λͺ¨λ¦¬ μ˜μ—­(Memory Areas)

 : Java ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰κ³Ό κ΄€λ ¨λœ 데이터와 μžμ›μ„ μ €μž₯ν•œλ‹€. μ£Όμš”ν•œ λ©”λͺ¨λ¦¬ μ˜μ—­μœΌλ‘œλŠ” λ©”μ„œλ“œ μ˜μ—­(Method Area), νž™(Heap), μŠ€νƒ(Stack), PC λ ˆμ§€μŠ€ν„°(Program Counter Register), λ„€μ΄ν‹°λΈŒ λ©”μ„œλ“œ μŠ€νƒ(Native Method Stack)이 μ‘΄μž¬ν•œλ‹€

  - λ©”μ„œλ“œ μ˜μ—­ : 클래슀 정보, μƒμˆ˜ ν’€(Constant Pool), λ©”μ„œλ“œ μ½”λ“œ λ“±μ˜ 정보λ₯Ό μ €μž₯.

  - νž™ : λ™μ μœΌλ‘œ μƒμ„±λœ 객체와 배열을 μ €μž₯. κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ€ νž™μ—μ„œ λΆˆν•„μš”ν•œ 객체λ₯Ό μžλ™μœΌλ‘œ 정리함.

  - μŠ€νƒ : λ©”μ„œλ“œ 호좜과 κ΄€λ ¨λœ 데이터λ₯Ό μ €μž₯. 

 

* νŠΉμ§•

- μŠ€νƒ 기반의 가상 λ¨Έμ‹ 

λͺ¨λ“  κΈ°λ³Έ νƒ€μž…μ˜ μ •μ˜λ₯Ό λͺ…ν™•νžˆ ν•¨μœΌλ‘œμ¨ ν”Œλž«νΌ λ…립성 λ³΄μž₯

- JVM은 κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(Garbage Collection)을 톡해 μžλ™μœΌλ‘œ λ©”λͺ¨λ¦¬λ₯Ό 관리

- JVM은 Java의 큰 μž₯점인 이식성, μžλ™ λ©”λͺ¨λ¦¬ 관리, μ•ˆμ •μ„± 및 ν’λΆ€ν•œ 라이브러리 μƒνƒœκ³„λ₯Ό μ œκ³΅ν•˜μ§€λ§Œ

μ‹€ν–‰ 속도, λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰, μ‹œμž‘ μ‹œκ°„ 및 λ¦¬μ†ŒμŠ€ 관리와 같은 일뢀 단점이 μ‘΄μž¬ν•œλ‹€.

 

 

 

μ™œ μžλ°” κ°€μƒ λ¨Έμ‹ (JVM) κ΅¬μ‘°λ₯Ό μ•Œμ•„μ•Ό ν•˜λŠ”κ°€?

 

μ‹œμŠ€ν…œμ˜ μ„±λŠ₯을 λ†’이기 μœ„ν•΄ μžλ°” κ°€μƒ λ¨Έμ‹ μ˜ κ΅¬μ„±κ³Ό λ©”λͺ¨λ¦¬λ₯Ό μ•„λŠ” κ²ƒμ€ μžλ°” κ°œλ°œμžλ‘œμ„œ ν•„μˆ˜μ μΈ μΌμ΄λ‹€.

νŠΉνžˆλ‚˜ λ©”λͺ¨λ¦¬λŠ” μ‚¬μš©ν•  μˆ˜ μžˆλŠ” κ³΅κ°„이 ν•œμ •λ˜μ–΄ μžˆκΈ°μ— μ–΄λ–»κ²Œ κ΄€λ¦¬ν•˜λŠλƒμ— λ”°λΌ ν”„λ‘œκ·Έλž¨μ˜ μ„±λŠ₯이 μ’Œμš°λœλ‹€

λ”°λΌμ„œ, λ©”λͺ¨λ¦¬λ₯Ό νš¨μœ¨μ μœΌλ‘œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ©”λͺ¨λ¦¬μ˜ κ΅¬μ„±κ³Ό κ° νŠΉμ§•μ— λŒ€ν•΄μ„œ μ΄ν•΄ν•  ν•„μš”κ°€ μžˆλ‹€.