JVM

JVM (Java Virtual Machine)

Java둜 μž‘μ„±λœ μ†ŒμŠ€ μ½”λ“œ(ν”„λ‘œκ·Έλž¨)λ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•œ ν”„λ‘œκ·Έλž¨

JVM의 λͺ©μ 

  1. JVM은 Java ν”„λ‘œκ·Έλž¨μ„ μ–΄λ–€ OSλ“  λ™μΌν•˜κ²Œ λ™μž‘ν•˜λ„λ‘ λ§Œλ“ λ‹€. 즉, OS에 μ˜μ‘΄μ μ΄μ§€ μ•Šλ„λ‘ ν•œλ‹€.

  2. JVM은 Java ν”„λ‘œκ·Έλž¨μ΄ 효율적으둜 싀행될 수 μžˆλ„λ‘ λ©”λͺ¨λ¦¬λ₯Ό κ΄€λ¦¬ν•˜κ³  μ΅œμ ν™”ν•œλ‹€.

JAVA ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ 절차

java-execution-structure

ꡬ성 μš”μ†Œ

  • μžλ°” 컴파일러(javac): μžλ°” μ†ŒμŠ€μ½”λ“œ(.java)λ₯Ό μ‹€ν–‰ κ°€λŠ₯ν•œ λ°”μ΄νŠΈμ½”λ“œ(.class)둜 λ³€ν™˜

  • 클래슀 λ‘œλ”: μ™ΈλΆ€ 클래슀λ₯Ό 가져와 λ‘œλ“œν•˜κ³  λ©”λͺ¨λ¦¬ μ˜μ—­μ— 배치

  • μ‹€ν–‰ μ—”μ§„: λ°”μ΄νŠΈ μ½”λ“œλ₯Ό μ‹€ν–‰

  • λŸ°νƒ€μž„ μ‹œμŠ€ν…œ: JVM이 ν• λ‹Ήλ°›μ•„ κ΄€λ¦¬ν•˜λŠ” λ©”λͺ¨λ¦¬ μ˜μ—­μ΄ 이에 ν¬ν•¨λœλ‹€.

λ™μž‘ 절차

  1. ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λ©΄ JVM은 OSλ‘œλΆ€ν„° ν•΄λ‹Ή ν”„λ‘œκ·Έλž¨μ˜ 싀행에 ν•„μš”ν•œ λ©”λͺ¨λ¦¬ μ˜μ—­μ„ ν• λ‹Ήλ°›λŠ”λ‹€. 이 κ³΅κ°„μ˜ κ΄€λ¦¬λŠ” JVM이 λ§‘λŠ”λ‹€.

  2. μžλ°” μ»΄νŒŒμΌλŸ¬κ°€ μžλ°” μ†ŒμŠ€μ½”λ“œ(.java)λ₯Ό μ»΄νŒŒμΌν•˜μ—¬ λ°”μ΄νŠΈμ½”λ“œ(.class)둜 λ³€ν™˜ν•œλ‹€.

  3. 클래슀 λ‘œλ”λŠ” λ°”μ΄νŠΈμ½”λ“œλ₯Ό 읽어 λ©”λͺ¨λ¦¬ μ˜μ—­μœΌλ‘œ λ‘œλ”©ν•œλ‹€. 이 κ³Όμ •μ—μ„œ μ™ΈλΆ€ λΌμ΄λΈŒλŸ¬λ¦¬λ“€λ„ ν¬ν•¨λœλ‹€.

  4. λ©”λͺ¨λ¦¬ μ˜μ—­μ— μ˜¬λΌκ°„ 클래슀 νŒŒμΌλ“€μ€ μ‹€ν–‰ 엔진에 μ˜ν•΄ μ‹€ν–‰λœλ‹€.

  5. JVM은 할당받은 λ©”λͺ¨λ¦¬μ˜ μ΅œμ ν™”λ₯Ό μœ„ν•΄ μŠ€λ ˆλ“œ 동기화, κ°€λΉ„μ§€ μ»¬λ ‰μ…˜κ³Ό 같은 λ©”λͺ¨λ¦¬ 관리 μž‘μ—…λ„ μˆ˜ν–‰ν•œλ‹€.

Last updated