◇ PART · SPRING

JVM 한눈에

자바가 OS 위에서 어떻게 돌아가는가

학습 목표

  • JVM 이 무엇이고 왜 필요한지 안다
  • 컴파일·로딩·실행 흐름을 큰 그림으로 그릴 수 있다
  • GC 가 자동으로 무엇을 청소하는지 안다

⚠️ 어디가 답답한가

자바의 미스터리

"내가 짠 .java 파일이 어떻게 윈도우·맥·리눅스에서 똑같이 돌아갈까?"

다른 OS 면 다른 명령어인데, 자바는 한 번 짜면 어디든 돈다. 마법 같은 이 일을 누가 하나?

🛠️ JVM (Java Virtual Machine)

자바의 가상 머신

OS 별 차이를 숨기고 자바 코드만 받아주는 「번역기 + 실행기」. 윈도우용 JVM, 맥용 JVM 이 따로 있고, 각자 OS 명령어로 변환해 실행합니다.

실행 흐름

.java (소스) │ javac (컴파일) ▼ .class (바이트 코드) ← OS 와 무관한 중간 형태 │ ▼ ┌──────────────────┐ │ JVM │ │ ① Class Loader │ → 메모리에 적재 │ ② Execution │ → 인터프리터 + JIT 컴파일러 │ ③ GC │ → 안 쓰는 객체 자동 청소 └──────────────────┘ │ ▼ OS 명령어 실행

핵심 부품 3가지

  • Class Loader.class 파일을 메모리에 적재
  • Execution Engine — 인터프리터(한 줄씩) + JIT 컴파일러(자주 쓰는 부분 통째로)
  • Garbage Collector (GC) — 더 이상 참조 안 되는 객체를 자동 회수

개발자는 메모리 해제를 직접 신경 쓰지 않아도 됨 — GC 가 알아서.

🔄 Before / After

Part 1 끝

자바 코드가 Tomcat 안에서 돌아간다는 사실은 안다.

이번 차시 끝

그 자바 코드가 JVM 위에서 어떻게 변환·실행되는지 큰 그림을 안다.

이번 차시의 데이터 흐름

.java 소스
JVM
로딩+실행+GC
OS 명령어
자바 코드의 실행 환경(JVM)이 흐름에 등장

정리

오늘 들고 가는 것

  • JVM = OS 별 차이를 숨기는 가상 머신
  • 3 단계: 로딩 → 실행 → GC
  • "한 번 짜면 어디든" 의 비밀

다음: Call by Value — 자바의 데이터 전달 방식.